Pregunta Emacs eshell sobre SSH no obedeciendo comandos clave o elisp


Cuando SSHing a un servidor remoto, Eshell no se comporta muy bien, por ejemplo:

M-x eshell
ssh server
<tab> *inserts literal tab instead of trying to complete*

Golpeando <tab>, por ejemplo, inserta una pestaña literal. ¿No hay forma de obtener la finalización de pestañas, la interacción de lisp (como find-file blah) etc. sobre SSH? Toda la documentación que he leído dice que Eshell es "consciente de TRAMP", lo que supongo que significa que podría lidiar con esto.

¿Estoy equivocado en mi suposición de que funcionaría en SSH, o hay algo roto?

Esto está en la prueba previa de Emacs 24.0.94.


4


origen


¿Ayuda si lo haces ssh -t -t server? El doble -t La opción obliga a ssh a asignar un pseudo-terminal aunque no se esté ejecutando en un tty. - Fran


Respuestas:


SSH está realmente integrado en Eshell usando Tramp-mode, así que en lugar de ejecutar el comando "ssh" que usas cd con un nombre de ruta especial:

~ $ cd /ssh:user@host.com:~
/ssh:user@host.com:/home/user $ 

Luego debe completar las pestañas para comandos y nombres de archivo en el servidor remoto. La finalización de pestañas puede ser lenta, dependiendo de la cantidad de alternativas que tenga que buscar de forma remota y transferir a través de la red.

Si tu memoria muscular te traiciona y sigues escribiendo "ssh", es posible que quieras definir un alias en eshell (esto se guardará automáticamente en ~/.emacs.d/eshell/alias)

$ alias ssh 'cd /ssh:$1:~'

También debe tenerse en cuenta que cuando Eshell está en un servidor remoto y usted golpea C-x C-f completará los nombres de archivo en el servidor remoto. Se cargarán automáticamente en un buffer local y se escribirán a través de SCP. Puedes hacer eso sin Eshell, también, es una característica del modo vagabundo.


6



Esto funciona como describes, pero si lo hago cd /ssh:user@host.com:~ seguido por cd / Termino de regreso en mi directorio raíz local, presumiblemente porque estoy usando eshell's cd. Sin embargo, *cd da el error cd: external command not found. ¿Conoces una manera de obtener la finalización de pestañas Y el comportamiento correcto de los comandos, o es Eshell la herramienta incorrecta para esto? - Gordon Gustafson
Esto resolvió mi problema: C-x C-f user@host.com:~, M-x shell. No es eshell, pero sí da cd y completar la pestaña. - Gordon Gustafson
cómo proporcionar una clave privada junto con esto cd /ssh:.. comando? - mythicalcoder