Emacs: vagabundo no funciona

Intenté abrir un archivo remoto a través de Emacs a través de Tramp.

(require 'tramp) (setq tramp-default-method "ssh") 

Recibo un mensaje de Emacs

Vagabundo: esperando indicaciones del shell remoto

Emacs colgó y no respondió a ninguna acción después de eso

Emacs fue instalado en Windows; el archivo remoto estaba en una máquina Linux.

Si la cuenta a la que se está conectando usa algún aviso extravagante de shell, entonces hay una gran probabilidad de que esto sea lo que hace que viaje.

Inicia sesión como root, luego ingresa

 PS1="> " 

(Es un aviso normal, de shell estándar (ZSH, BASH, younameit), uno que tramp entenderá) luego cambia a la cuenta de usuario y .emacs emacs -q (para asegurarte de que tus .emacs no están causando este desastre) y prueba a Cx Cf /sudo:root@localhost:/etc/hosts y ver qué es qué.

Usted puede (no recomendado) también personalizar la expresión regular que define lo que espera el vagabundo:

 Mx customize-variable RET tramp-terminal-prompt-regexp 

Mi acercamiento :

  1. Asegúrese de que la variable tramp-terminal-type esté configurada como “tonta”

Mx customize-variable RET tramp-terminal-type

  1. Pruébelo en su. * Shrc y envíe el mensaje correcto:
 case "$TERM" in "dumb") PS1="> " ;; xterm*|rxvt*|eterm*|screen*) PS1="my fancy multi-line \n prompt > " ;; *) PS1="> " ;; esac 

Su cliente ssh de Windows es la clave aquí, y el método ‘vado’ ssh ‘es casi seguro que está equivocado.

Si está usando Cygwin, entonces necesita usar el método ‘sshx’, y probablemente necesite usar ssh-agent para manejar la autenticación. Los detalles están aquí: ¿es posible usar vagabundo con EmacsW32 y cygwin?

Me imagino que lo mismo se aplica a cualquier cliente ssh autónomo que no requiera una instalación completa de Cygwin, pero utiliza las DLL de Cygwin. (Menciono esto, porque estoy bastante seguro de recordar haber visto algo así).

Si está usando PuTTY, entonces quiere el método ‘plink’, como señaló Alex Ott. Si el Wiki no es suficiente, una búsqueda aquí probablemente arroje soluciones para configurar ese enfoque.

Otras alternativas que puedo sugerir son:

  1. Use el Emacs nativo de Cygwin. Eso será más lento que NTEmacs, pero Tramp parece funcionar bien con el método ‘ssh’, y la solicitud de contraseñas también funciona.

  2. Aloje una máquina virtual Linux en su cuadro de Windows, y ejecute Emacs en eso. Ese es un aro bastante grande para saltar, pero es mi forma preferida de usar Tramp cuando trabajo en Windows.

¿ Habías revisado la wiki de Emacs para encontrar una solución? ssh está en PATH ? También se recomienda usar plink en MS Windows – ver la sección “Métodos en línea” en la documentación de Tramp

Por cierto, si necesitas un tramp para sudo , puedes sudo sin vagabundeo usando sudoedit .

Actualmente estoy usando esta función bash:

 erf () { SUDO_EDITOR="emacsclient -a emacs" sudoedit $@; } 

Bueno, este es un defecto de vagabundo.

La solución real es evitar la carga de .bashrc cuando se usa tramp . (porque ahora es PS1, pero puede ser PATH, o cualquier otra cosa que tu .bashrc hará que desagradará tramp …).

Esto se puede hacer pidiendo a ssh que establezca una variable de entorno y la pruebe en .bashrc :

Agregue esto a ~/.emacs :

(require 'tramp-sh nil t) (setf tramp-ssh-controlmaster-options (concat "-o SendEnv TRAMP=yes " tramp-ssh-controlmaster-options))

y eso al comienzo de ~/.bashrc :

if [ ! -z ${TRAMP-x} ] ; then return fi

Otro valor predeterminado de tramp es que no tiene una variable para pasar argumentos aleatorios al comando ssh , tenemos que tramp-ssh-controlmaster-options .