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 index.html
archivo en el shell. Noté que algunos comandos de emacs funcionan pero otros no. Por ejemplo, C-w
no funciona; M-<
No funciona. ¿Cómo puedo solucionar este problema y cuál es la mejor manera de trabajar con emacs y ssh?
Encontré esta pregunta pero me confundió más.
M-x describe-mode
.Respuestas:
Generalmente 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 a abrir cualquier otro archivo además de una sintaxis ligeramente diferente .
Para ssh, puede escribir
C-x C-f
. Ahora, en el minubuffer que desea escribir/ssh:user@host:/path/to/file
( tenga en cuenta que la finalización de tabulación funcionará una vez que comience a escribir una ruta. También observe el/
carácter inicial ). Vea los documentos completos aquí .En su ejemplo, eso sería:
C-x C-f /ssh:user@192.168.1.5:/usr/share/nginx/html/index.html
Ahora puede editar archivos remotos sobre ssh en Emacs mientras usa su configuración local y cualquier paquete instalado, etc.
fuente
tramp
y es una de las cosas más útiles que jamás usará. ¡Incluso se compila de forma remota!index.html
porque dice que el búfer es de solo lectura. Pero puedo editar el mismo archivo si lo abro en la computadora remota. Por cierto, cuando abrí el archivo conC-x C-f /ssh:user@host filename
él me pidió la contraseña./method:user@host#port:filename
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
dired
búfer en una máquina remota. Puede navegar por este búfer como lo haría con uno local.Si ha configurado claves ssh para la máquina remota, ni siquiera tiene que ingresar la contraseña.
Si tiene un montón de máquinas remotas, puede dar un nombre reconocible a cada función, por ejemplo
connect-cupcake
,connect-kitkat
y usarsmex
paquete para completar.fuente
/usr/share/nginx/html/index.html
si lo abro en la máquina remota; pero cuando lo abro con ssh,index.html
es de solo lectura. ¿Por qué es esto?/usr/share/
.C-x C-f /sudo ssh:user@host filename
pero eso no funciona./usr/share/nginx/html/
carpeta conchown
./etc/nginx/sites-available/example.com.conf
edité, lo guardé y lo cerré. ¿Ahora lo abrí de nuevo, y esta vez no puedo editarlo? Supongo que tiene que ver con los permisos. ¿Puedes ayudarme a entender por qué sucede esto?Y para agregar a la publicación de @ abo-abo sobre "atajos":
Utilice los marcadores de Emacs. Simplemente cree marcadores normalmente, cuando visite un archivo o directorio remoto. Entonces solo usa
C-x r b
para saltar a un marcador remoto, cuyo nombre proporcione (con la terminación).Si usa Bookmark + , los marcadores remotos se resaltan especialmente en el
*Bookmark List*
, para que pueda reconocerlos más fácilmente. Y marcadores remotos a los que debe accedersu
osudo
(root
) se resaltan de manera diferente.Si usa Dired + , también puede marcar rápidamente varios archivos o directorios remotos, visitando el directorio remoto que los contiene en Dired, marcándolos y presionando
C-x b
. No es necesario dar nombres a los marcadores; llevan el nombre de los archivos. Incluso si nunca usa esos marcadores para navegar a los archivos remotos, puede usarlos con las etiquetas Bookmark + para organizar los archivos y así operar en subconjuntos de ellos.Si usa Icicles , siempre que use un comando para saltar a un marcador, puede reducir los candidatos de finalización a aquellos que están remotos presionando
C-M-@
durante la finalización.fuente
El cartel original expresó interés en abrir archivos remotos como usuario root. Esto se puede hacer con el comando:
C-x C-f /ssh:you@remotehost|sudo:remotehost:/path/to/file RET
Puede encontrar más documentación aquí: https://www.emacswiki.org/emacs/TrampMode#toc14
fuente
Una respuesta simple que se centra en la máquina remota:
Si planeo hacer todo mi trabajo emacs en la máquina remota, uso
y luego ejecutar emacs en la sesión remota, mostrándose de nuevo en mi máquina local. Es una vieja pregunta, pero quería incluir esto para completarlo. De acuerdo, hay algunos problemas de configuración de xhost / X, pero en muchas redes esto funcionará desde el principio.
fuente
El modo SSH para emacs es lo que está buscando.
Una vez que lo haya configurado, simplemente ejecute
Luego le solicita su contraseña dos veces (una para la línea de comando, una vez para cargar archivos).
En su mayor parte, puede tratarlo como cualquier otro shell (no interactivo y 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á viendo, 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.
fuente