Cómo usar Sublime sobre SSH

237

Estoy tratando de usar Sublime Text 2 como editor cuando ingreso SSH a mi servidor de trabajo, y estoy perplejo. Encontré este http://urbangiraffe.com/2011/08/13/remote-editing-with-sublime-text-2/ (entre muchas otras publicaciones) que parece que podría ayudar, pero no lo sigo exactamente , en particular con los valores que debo poner para la variable remota en la línea 5. Configuré "/ Users / path / to / local / copy" en mi directorio raíz local, pero no sé si eso es correcto o si hay más que hacer. ¿Alguna idea? Estoy en OSX10.8

chincheta
fuente
12
Me ha resultado más fácil usar osxfuseysshfs en mi Mac montar localmente directorios remotos y luego editarlos a través de ST2.
AGS
Hay un popular complemento ST2 para sftp. Aquí hay una explicación más detallada de un sistema al que creo que se refiere AGS: superuser.com/questions/134140/… . Tuve un problema con la carga automática al iniciar sesión y tuve que usar una secuencia de comandos de inicio de sesión alternativa hecha con Platypus. También necesitaba una versión mejor de macfuse. Veré si puedo encontrar el enlace si está interesado.
leyes
Con Snow Leopard (10.6.8), necesitaba un núcleo actualizado para MacFuse (es decir, macfuse-core-10.5-2.1.9.dmg): aquí está el enlace a donde lo obtuve: blog.urbaninsight.com/2011 / 04/18 / ... Si estás interesado, eso te ahorrará muchos dolores de cabeza.
leyes
No sería en vivo, y tal vez sea menos adecuado para ver archivos de registro y otras cosas, pero a menudo configurar la gitolita puede valer la pena. Solo git pull y tienes todo lo local para jugar. Por otra parte, muchas personas tienen internet rápido en estos días y no sentirían el retraso de netwok ... Todo depende de su configuración.

Respuestas:

161

Hay tres formas:

Además, en teoría, puede instalar X11 en el servidor remoto y ejecutar Sublime allí mediante el reenvío VNC o X11, pero no tendría sentido hacerlo.

Mikko Ohtamaa
fuente
1
Ver también relacionada con la pregunta superuser.com superuser.com/questions/581292/...
Mikko Ohtamaa
11
¡El combo SSHFS / osxfuse funcionó para mí! Gracias. Para otros con este problema: github.com/osxfuse/osxfuse/wiki/SSHFS
thumbtackthief
¿Puede uno con el complemento sftp usar herramientas como shells interactivos y responder como en emacs?
Edmondo1984
@ Edmondo1984 solo usa un terminal real para eso
Mikko Ohtamaa
1
Sublime SFTP en realidad le permite editar archivos de forma remota pero sin el panel de proyecto ST (por lo que no debe ir a ninguna parte ), o hace algo como rsync. Hay una prueba gratuita para probarlo.
Wernight
102

Puede usar rsub , que está inspirado en TextMate's rmate. De la descripción:

Rsub es una implementación de la función 'rmate' de TextMate 2 para Sublime Text 2, que permite editar archivos en un servidor remoto utilizando el reenvío / tunelización de puertos SSH.

Aquí hay un buen tutorial sobre cómo configurarlo correctamente.

ubik
fuente
2
También estoy de acuerdo en que hacer que rsub funcione es muy fácil y permite sudo, lo cual es genial. Me encontré con algunos problemas para que funcionara bien, pero SO también tenía la respuesta: stackoverflow.com/questions/18938950/…
Ross R
77
marque esta respuesta en lugar de la primera, ya que es gratis
theodore
La guía funcionó perfectamente, incluso para un novato terminal total como yo. ¡Gracias!
Henrik
66

Estoy en Windows y he usado 4 métodos: SFTP , WinSCP , Unison y Sublime Text en Linux con reenvío X11 a través de SSH a Windows (sí, puedes hacerlo sin configuraciones desordenadas y usando una herramienta gratuita).

La cuarta forma es la mejor si puede instalar software en su máquina Linux.

La cuarta forma:

MobaXterm

  1. Instalar MobaXterm en Windows
  2. SSH a su caja de Linux desde MobaXterm
  3. En su caja de Linux, instale Sublime Text 3. Aquí está cómo hacerlo en Ubuntu
  4. En el símbolo del sistema, comience sublime con subl
  5. ¡Eso es! Ahora tiene texto sublime ejecutándose en Linux, pero con su ventana ejecutándose en su escritorio de Windows. Esto es posible porque MobaXterm maneja el reenvío X11 sobre SSH por usted para que no tenga que hacer nada raro para que funcione. Puede haber una pequeña demora, pero sus archivos nunca estarán fuera de sincronización, porque los está editando directamente en la máquina Linux.

Nota: Al invocar subl si se queja de una determinada biblioteca, asegúrese de instalarlos para invocar con éxito sublimetext de mobaxterm.

Si no puede instalar software en su caja Linux, lo mejor es Unison. ¿Por qué?

  • Es gratis
  • Es rápido
  • Es confiable y no le importa qué editor usa
  • Puede crear listas de ignorar personalizadas

SFTP

Configuración: instale el paquete SFTP Sublime Text. Este paquete requiere una licencia.

  1. Crear una nueva carpeta
  2. Ábrelo como un proyecto de texto sublime.
  3. En la barra lateral, haga clic derecho en la carpeta y seleccione Map Remote.
  4. Edite el archivo sftp-config.json
  5. Haga clic derecho en la carpeta en el paso 1, seleccione descargar.
  6. Trabajar localmente.

En la configuración sftp, generalmente configuro:

"upload_on_save": true,
"sync_down_on_open": true,

Esto, además de un terminal SSH para la máquina, me brinda una experiencia de edición remota bastante fluida.

WinSCP

  1. Instalar y ejecutar WinSCP
  2. Vaya a Preferencias (Ctrl + Alt + P) y haga clic en Transferir, luego en Agregar. Nombra el preset.
  3. Establezca el modo de transferencia en binario (no desea conversiones de línea)
  4. Establezca la modificación del archivo en "Sin cambios"
  5. Haga clic en el botón Editar junto a Máscara de archivo y configure los archivos y carpetas de inclusión y exclusión (útil para cuando tiene una carpeta .git / .svn presente o desea excluir la sincronización de productos de compilación).
  6. Haga clic en Aceptar
  7. Conéctese a su servidor remoto y navegue a la carpeta de interés
  8. Elija una carpeta vacía en su máquina local.
  9. Seleccione su ajuste preestablecido de configuración de transferencia recién creado.
  10. Finalmente, presione Ctrl + U (Comandos> Mantener el directorio remoto actualizado) y asegúrese de que "Sincronizar al inicio" y "Actualizar subdirectorios" estén marcados.

A partir de entonces, WinSCP mantendrá sus cambios sincronizados.

Trabaja en la carpeta local usando SublimeText. Solo asegúrate de que Sublime Text esté configurado para adivinar las terminaciones de línea del archivo que se está editando.

Unísono

He descubierto que si el árbol de origen es masivo (alrededor de unos cientos de MB con una jerarquía profunda), entonces el método WinSCP descrito anteriormente podría ser un poco lento. Puede obtener un rendimiento mucho mejor con Unison . La desventaja es que Unison no es automático (necesita activarlo con una pulsación de tecla) y requiere que se ejecute un componente del servidor en su máquina Linux. La ventaja es que las transferencias son increíblemente rápidas, es muy confiable e ignorar archivos, carpetas y extensiones es increíblemente fácil de configurar.

Carl
fuente
+1 para el SFTP setupenlace. No sabía si SFTP era software de Windows o un paquete Sublime.
Kevin Meredith
Utilizo sftp para ST2, PuTTY y un poco de FileZilla como medida. Es la mejor configuración que he encontrado después de probar muchas. Sin embargo, no me gusta tener que mantener un conjunto de archivos local. Prefiero ST en lugar de los editores de terminal liek vi o nano; hacer que ST3 en el servidor en sí suene como un buen negocio. gracias por el consejo -
Bosworth99
Si eres un usuario de cyberduck ( cyberduck.io/?l=en ), sublimetext se integra muy bien.
sakurashinken
33

Como seguimiento a la respuesta de @ ubik, estos son los tres pasos simples (una vez) para que el comando 'subl' funcione en su servidor remoto:

  1. [ Local ] Instale el rsubpaquete en Sublime Text usando el Sublime Package Manager
  2. [ Local ] Ejecute el siguiente comando Bash (esto configurará un túnel SSH , que es la salsa secreta de rsub):

    printf "Host *\n    RemoteForward 52698 127.0.0.1:52698" >> ~/.ssh/config
  3. [ Servidor ] Ejecute el siguiente comando Bash en su servidor remoto (esto instalará el comando de shell 'subl'):

    sudo wget -O /usr/local/bin/subl https://raw.github.com/aurora/rmate/master/rmate; sudo chmod +x /usr/local/bin/subl

¡Y voilá! Ahora estás usando Sublime Text sobre SSH.

Puede abrir un archivo de ejemplo en Sublime Text desde el servidor con algo como subl ~/test.txt

usuario456584
fuente
1
Quiero evitar: /usr/local/bin/subl: connect: Connection refused /usr/local/bin/subl: line 200: /dev/tcp/localhost/52698: Connection refused Unable to connect to TextMate on localhost:52698. Pensamientos?
chincheta
1
Sí: agregue -R 52698: localhost: 52698 a su comando ssh. Ver aquí: stackoverflow.com/questions/18938950/…
Ross R
Consejo novato que me pareció útil: recuerde tener Sublime ejecutándose en su máquina local. Eso realmente inicia el servidor.
Magne
@RossR: esto no funciona. El mío se ve así: "RemoteForward 52698 127.0.0.1:52698 -R 52698: localhost: 52698" y aún muestra el mismo error: "No se puede conectar a TextMate en localhost: 52698"
FooBar
1
lo anterior funciona, solo necesita reiniciar el servidor remoto después o seguirá recibiendo el error de conexión denegada.
ctf0
10

Estoy en MacOS, y la forma más conveniente para mí es usar CyberDuck , que es gratuito (también disponible para Windows). Puede conectarse a su sistema de archivos SSH remoto y editar su archivo usando su editor local. Lo que hace CyberDuck es descargar el archivo a un lugar temporal en su sistema operativo local y abrirlo con su editor. Una vez que guarde el archivo, CyberDuck lo cargará automáticamente a su sistema remoto. Parece transparente como si estuviera editando su archivo remoto utilizando su editor local. Los desarrolladores de Cyberduck también hacen MountainDuck para montar sistemas de archivos remotos.

bizi
fuente
1
voté positivamente, aunque esto no funciona con sudo ... (archivos que necesitan acceso de superusuario para escribir)
Tiago Coelho
1
Llegó a publicar esta solución exacta. Mientras esté usando CyberDuck, es muy conveniente. Sin embargo, tenga en cuenta que solo funciona mientras se ejecuta CyberDuck. También puede usar el mismo método para abrir archivos en otros editores, pero he descubierto que no todos funcionarán de manera confiable y pueden perder la conexión o cambiar silenciosamente a guardar localmente en lugar de remotamente (por ejemplo, Microsoft Excel). Sin embargo, nunca tuve un solo problema con esto usando Sublime.
user5359531
8

Puedes probar algo en lo que he estado trabajando llamado ' xeno '. Le permitirá abrir archivos / carpetas en Sublime Text (o cualquier editor local realmente) a través de una conexión SSH y sincronizar automáticamente los cambios en la máquina remota. Debería funcionar en casi todos los sistemas POSIX (yo mismo lo uso desde OS X para conectarme a máquinas Linux y editar archivos en Sublime Text). Es gratis y de código abierto. Me encantaría algunos comentarios.

Para más información: es básicamente un mashup Git / SSH escrito en Python que le permite editar archivos y carpetas en una máquina remota en un editor local. No tiene que configurar los módulos del kernel, no necesita tener una conexión persistente, todo es automático y no interferirá con el control de origen existente porque utiliza un repositorio Git fuera del trabajo. Además, debido a que está construido en Git, es extremadamente rápido y admite la fusión automática de archivos que podrían estar cambiando en ambos extremos, a diferencia de SSHFS / SFTP, que simplemente bloqueará cualquier archivo con marcas de tiempo más antiguas.

caos-io
fuente
Y he escrito algunas publicaciones de blog simples con scripts y opciones de configuración que hacen de ST2 + Xeno un combo increíble. Www.yeraze.com
Yeraze
5

Puede usar sftp para montar el directorio remoto en su máquina de ubicación y luego simplemente abrir los archivos usando texto Sublime de la forma habitual.

Para montar el directorio remoto usando sftp, ingrese lo siguiente en su administrador de archivos Linux;

sftp://user@remote_box.com:22/home/user/code_directory

Puede parecer lento dependiendo de las velocidades de Internet. Pero esto funcionó para mí.

David Okwii
fuente
5

Sé que esto es muy antiguo, pero tengo una forma genial de hacerlo que vale la pena compartir.

Lo que se requiere en Conemu y WinSCP . Estas son instrucciones simples

  1. Abra WinSCP.exe e inicie sesión en mi servidor remoto deseado (he
    descubierto que es importante iniciar sesión antes de adjuntar ...).

  2. En las preferencias de WinSCP: dos configuraciones para cambiar. Elija la interfaz de tipo Explorer y no Commander, para que no vea los archivos locales. A menos que quieras (pero parece que sería un asco aquí). Configura Sublime como tu editor predeterminado.

  3. Con ConEmu abierto, haga clic derecho en la barra de pestañas y seleccione la opción Attach to.... Se abrirá un cuadro de diálogo con sus aplicaciones en ejecución. Elija, WinSCP y seleccione Aceptar. ConEmu ahora tendrá una pestaña abierta con WinSCP mostrando sus archivos remotos.

  4. Haga clic derecho en la pestaña WinSCP y elija New console.... Cuando se abra el cuadro de diálogo, ingrese la ruta al ejecutable Sublime en su sistema. Antes de presionar Start, en el cuadro que dice New console splitseleccione el botón de opción to righty establezca el porcentaje. Por lo general, elijo el 75%, pero puede personalizarlo a su gusto y se puede cambiar más adelante.

    1. Ahora verá Sublime en la misma ventana que se ejecuta a la derecha de WinSCP. En Sublime, en el menú Ver, elija Sidebar->Hide Sidebary bam, ahora tiene archivos remotos exactamente de la misma manera que lo haría localmente, con algunas advertencias, por supuesto, que viene con la edición de cualquier cosa de forma remota. Sin embargo, WinSCP se está aligerando rápidamente.

Tengo dos monitores: el navegador Chrome de la pantalla del monitor izquierdo, el monitor derecho muestra el editor de código. También en ConEmu, creo otra pestaña y ssh en el sitio en el que estoy trabajando, para que pueda hacer cosas como ejecutar gulpo gruntremotamente y también manipular archivos desde la línea de comandos. Desarrollo acelerado en serio.

Aquí hay una captura de pantalla:

Captura de pantalla de configuración

dgo
fuente
5

Esta es la forma más fácil de editar localmente archivos que viven en un host remoto donde previamente ha configurado ssh para IP remota

# issue on local box

sudo apt-get install sshfs   # on local host install sshfs ( linux )

# on local box create secure mount of remote directory

export REMOTE_IP=107.170.58.249 # remote host IP

sshfs myremoteuserid@${REMOTE_IP}:/your/remote/dir  /your/local/dir # for example

Hecho !!!

Ahora en el host local, simplemente comience a editar archivos ... cuando enumere el directorio localmente, es posible que no enumere nada hasta que cd en subdir o un archivo específico ... carga diferida ... esto no afecta la edición de archivos

subl /your/local/dir/magnum_opus.go # local file edit using sublime text

así que arriba está realmente editando archivos remotos en

/your/remote/dir/magnum_opus.go  # remote file on box $REMOTE_IP

Para OSX o Windows, vea este tutorial de la gente amable en Digital Ocean

Scott Stensland
fuente
4

Otra solución mac similar a osxfuse es usar el cliente Transmit FTP desde Panic Software, que le permite montar una carpeta remota como un disco local. Es compatible con SFTP, que es muy seguro.

Gavster
fuente
Me gusta mucho esta opción. El montaje debería permitirle abrir todo el disco como un proyecto sublime.
Mic Fok
3

He estado trabajando en un proyecto llamado GiySync . Todavía necesita algo de trabajo, pero es de código abierto y lo he estado usando todos los días durante un par de años. También estoy trabajando en una versión nativa de OS X que he llamado GitSyncApp

En este momento es solo OS X, pero debería ser fácil agregar soporte para Linux, y posiblemente también para Windows.

Funciona mirando los eventos del sistema de archivos y usa git para sincronizar una carpeta de proyecto en su máquina local y un servidor.

Probé las otras soluciones como osx fuse, Expand Drive, Transmit, varias soluciones que usaban rsync, etc. Todas funcionan 'OK' para proyectos pequeños, pero si estás trabajando con mucho código no funcionaron para mí.

Muchas de las opciones del sistema de archivos almacenan en caché para mejorar el rendimiento, lo cual está bien, hasta que no lo está. Como si está trabajando con otras personas y alguien más cambia los archivos en el servidor.

También me encontré con problemas si estaba en una red débil o escasa donde terminaría con archivos vacíos. O archivo que no se sincronizó, entonces el almacenamiento en caché se volvió extraño; ojalá te hayas comprometido recientemente. El uso de git resuelve este problema porque verifica la integridad de cada confirmación.

Dos características adicionales:

  1. Terminas con una confirmación por cada salvación. No es súper útil, pero si alguna vez tiene que retroceder en el tiempo, puede hacerlo.
  2. Funciona con cualquier editor de texto.
Jachin
fuente
0

Dependiendo de sus necesidades exactas, puede considerar usar BitTorrent Sync. Cree una carpeta compartida en su PC doméstica y su PC laboral. Edite los archivos en la PC de su hogar (usando Sublime o lo que quiera), y se sincronizarán automáticamente cuando guarde. BitTorrent Sync no se basa en un servidor central que almacene los archivos (al estilo de Dropbox y similares), por lo que, en teoría, no debería tener problemas debido a que un tercero almacena información confidencial.

el tipo respeta
fuente
0

Una solución que funcionó muy bien para mí: edite localmente en Mac y sincronice el archivo automáticamente en una máquina remota

  1. Asegúrese de tener un inicio de sesión sin contraseña en la máquina remota. Si no, siga estos pasos http://osxdaily.com/2012/05/25/how-to-set-up-a-password-less-ssh-login/

  2. cree un archivo en ~ / Library / LaunchAgents / filesynchronizer.plist, con el siguiente contenido:

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>filesynchronizer</string> <key>ProgramArguments</key> <array> <string>/usr/bin/rsync</string> <string>-avz</string> <string>/Users/USERNAME/SyncDirectory</string> <string>USERNAME@REMOTEMACHINE:~</string> </array> <key>WatchPaths</key> <array> <string>/Users/USERNAME/SyncDirectory</string> </array> </dict> </plist>

  3. En una ventana de terminal, ejecute

    launchctl load ~/Library/LaunchAgents/filesynchronizer.plist

  4. Eso es. Cualquier cambio en cualquier archivo en ~ / SyncDirectory se sincronizará con ~ / SyncDirectory en la máquina remota. Los cambios locales anularán cualquier cambio remoto.

Esto crea un trabajo de lanzamiento que supervisa SyncDirectory, y cada vez que algo cambia, ejecuta rsync para sincronizar el directorio con la máquina remota.

Ran Locar
fuente
¿Es esta una sincronización bidireccional?
mordido el
No; Solo máquina local a remota
Ran Locar
0

lsyncd parece ser una buena alternativa al enfoque sshfs. Si usa "-delay 0" funciona en tiempo real.

JLarky
fuente
0

Use FileZilla

Esto se aplica a los usuarios de Mac y Windows (lo uso en Mac). He utilizado varias de las respuestas enumeradas a lo largo de los años y he descubierto que FileZilla se adapta bien a mis necesidades al editar archivos en un host remoto al que tengo acceso SSH. También es rápido de configurar.

  • Configuro una nueva conexión de servidor
  • conectarse al servidor
  • haga clic derecho en el archivo que me gustaría editar y seleccione View/Edit.

Esto muestra mi editor predeterminado (Sublime) pero funcionará con cualquier editor que haya instalado.

  • Una vez que guardo el archivo, Filezilla me pregunta automáticamente si me gustaría "Volver a cargar este archivo en el servidor", hago clic en "Sí" y luego se actualiza.
Ben Havilland
fuente