emacs ssh

¿Cuál es la mejor manera de abrir archivos remotos con emacs y ssh?



(6)

Me conecto a la máquina remota con ssh [email protected] . Cuando necesito abrir un archivo en la máquina remota, lo hago, por ejemplo,

emacs /usr/share/nginx/html/index.html

y eso abre el archivo index.html en el shell. Noté que algunos comandos de emacs funcionan, pero otros no funcionan. Por ejemplo, Cw no funciona; M-< no funciona. ¿Cómo puedo solucionar esto y cuál es la mejor manera de trabajar con emacs y ssh?

Encontré esta pregunta pero me hizo más confundido.


El póster original expresó interés en abrir archivos remotos como el usuario raíz. Esto se puede hacer con el comando:

Cx Cf /ssh:you@remotehost|sudo:remotehost:/path/to/file RET

Se puede encontrar más documentación aquí: https://www.emacswiki.org/emacs/TrampMode#toc14


Por lo general, prefiero abrir archivos remotos desde una instancia local de Emacs.

Mientras ejecuta Emacs en su máquina local , abrir un archivo remoto a través de ssh no es muy diferente de abrir cualquier otro archivo además de una sintaxis ligeramente diferente .

Para ssh, puede escribir Cx Cf Ahora, en el minubuffer, debe escribir /ssh:user@host:/path/to/file (tenga en cuenta que la finalización de la pestaña funcionará una vez que comience a escribir una ruta. También tenga en cuenta el carácter / principal). Vea los documentos completos aquí .

En tu ejemplo, eso sería:

C-x C-f /ssh:[email protected]:/usr/share/nginx/html/index.html

Ahora puede editar archivos remotos a través de ssh en Emacs mientras usa su configuración local y cualquier paquete instalado, etc.


Solo para agregar a la respuesta anterior, puede escribir accesos directos para las máquinas que usa con frecuencia:

(defun connect-remote () (interactive) (dired "/[email protected]:/"))

Esto abrirá un búfer dired en una máquina remota. Puede navegar este búfer como lo haría con uno local.

Si ha configurado las teclas ssh para la máquina remota, ni siquiera tiene que ingresar la contraseña.

Si tiene un grupo de máquinas remotas, puede dar un nombre reconocible a cada función, por ejemplo, connect-cupcake , connect-kitkat y usar el paquete smex para completar.


Una respuesta simple que se enfoca en la máquina remota:

Si planeo hacer todos mis emacs trabajando en la máquina remota, uso

ssh -X username@hostname

y luego ejecute emacs en la sesión remota, mostrándola en mi máquina local. Es una vieja pregunta, pero quería presentar esto para completar. De acuerdo, hay algunos problemas de configuración xhost / X pero en muchas redes esto funcionará de inmediato.


Y para agregar a la publicación de @ abo-abo sobre "accesos directos" -

Use los marcadores de Emacs. Simplemente cree favoritos cuando visita un archivo o directorio remoto. Luego, simplemente use Cx rb para saltar a un marcador remoto, cuyo nombre proporcione (con finalización).

Si usa Bookmark+ , los marcadores remotos se resaltan especialmente en la *Bookmark List* , para que pueda reconocerlos más fácilmente. Y los marcadores remotos a los que debe acceder su o sudo ( root ) se resaltan de forma diferente.

Si usa Dired+ , también puede marcar rápidamente varios archivos o directorios remotos, visitando su directorio remoto que contiene en Dired, marcándolos y presionando Cx b . No es necesario dar los nombres de marcadores; se nombran después de los archivos. Incluso si nunca usa esos marcadores para navegar a los archivos remotos, puede usarlos con tags Bookmark + para organizar los archivos y así operar subconjuntos de ellos.

Si usa Icicles , cada vez que use un comando para saltar a un marcador, puede restringir los candidatos de finalización a los que son remotos presionando CM-@ durante la finalización.


El modo SSH para emacs es lo que estás buscando.

Una vez que lo tienes configurado simplemente corres

M-x ssh RET hostname RET

Luego, le solicita su contraseña dos veces (una para la línea de comando, una para cargar archivos).

En su mayor parte, puedes tratarlo como cualquier otro shell (no interactivo y con algunas diferencias menores, pero eso es todo).

Realiza un seguimiento del directorio en el que se encuentra, por lo que cuando desea abrir un archivo desde el directorio que está buscando, se inicia automáticamente en el directorio correcto y solo necesita ingresar el nombre del archivo.

Emacs Wiki también tiene más información.