¿Cómo ssh al servidor remoto y usar emacs locales para editar archivos?

8

¿Hay alguna manera de usar los emacs instalados en mi computadora local para acceder a los archivos remotos que tengo en un servidor remoto? Busqué en Google y descubrí que debería usar TrampMode, sin embargo, es necesario que sepa la ruta exacta del archivo. ¿No hay una manera de abrir una conexión ssh al servidor remoto y desde allí abrir los archivos con los emacs locales en mi computadora?

Starcorn
fuente

Respuestas:

5

Hay varias formas de hacer esto, pero en general se trata este problema al revés. Copie sus configuraciones de emacs en la máquina remota y use emacs local para los archivos que está editando.

Las "diversas formas de hacer esto" caerían en dos categorías. Primero serían formas de montar una unidad remota localmente a través de algo como sshfs, algún sistema de archivos de fusibles, samba, nfs o cualquier otro sistema de montaje para brindar acceso a nivel de archivo a su máquina. El segundo sería varios programas que le permiten iniciar sesión y explorar un sistema remoto, luego operar en archivos al transferir una copia de ellos a un archivo temporal local, editarlo y luego volver a transferirlo. Varios programas hacen que ese proceso se vea bastante fluido, pero es un truco.

Caleb
fuente
1
"Varios programas hacen que ese proceso se vea bastante perfecto, pero es un truco". No es un truco, es una forma natural de trabajar con archivos remotos.
Gilles 'SO- deja de ser malvado'
@Gilles: No sé nada Tramp, por lo que mi alegación de "pirateo" no debe aplicarse. Estaba pensando particularmente en varios programas de administración de archivos que tienen elementos de menú como "abrir en un editor". Si bien estos funcionan para abrir un archivo, generalmente son frágiles en la forma en que requieren que se copie, modifique, vuelva a copiar el archivo, etc. en archivos Si conoce una forma de evitar las limitaciones en Tramp@starcorn de las que se quejó, ¡agregue otra respuesta!
Caleb
1
Con Tramp, el editor está haciendo el trabajo, por lo que sabe presionar al guardar, etc. La solución ideal sería hacer que emacsserver y ssh interoperen, pero eso es difícil. Las dos soluciones que habría ofrecido son sshfs y eshell, ambas ya mencionadas.
Gilles 'SO- deja de ser malvado'
2

O puede abrir emacs, ejecutar eshell y luego cd a la máquina remota, como:

cd /hostname:~

Ahora, ejecute comandos de shell, navegue hasta el archivo que desee y ábralo:

find-file filename
minaev
fuente
2

Creo que Tramp es lo que estás buscando. Puede usar el modo Dired para explorar los directorios remotos y buscar el archivo que desee.

Por ejemplo, si estoy buscando algún archivo en /etc/una máquina remota rem, haría lo siguiente:

  • Abra emacs
  • golpear C-x C-f
  • eliminar el camino ya presente
  • escriba /rem:/etc/y presione enter.

Obtendrá una salida como esta:

/ssh:rem:/etc:
total 1460
drwxr-xr-x 141 root root    12288 Aug 12 06:46 .
drwxr-xr-x  23 root root     4096 Jul 18 23:48 ..
drwx------   6 root root     4096 Nov 17  2009 .bzr
-rw-------   1 root root      749 Jul 18 23:30 .bzrignore
-rwx------   1 root root    10015 Aug 12 09:17 .etckeeper
drwxr-xr-x   3 root root     4096 Aug  6 00:47 .java
-rw-------   1 root root        0 Nov 17  2009 .pwd.lock

Luego puede usar, por ejemplo, las teclas de flecha para encontrar el archivo que desea editar. Presione enter cuando el cursor esté en el archivo para editarlo.

ph0t0nix
fuente