2011-01-13 18 views
10

Mi patrón de uso actual de emacs da como resultado que tenga varios almacenamientos intermedios en modo shell abiertos, cada uno ejecutando una sesión ssh. Me encuentro con un problema con esto, sin embargo, cuando trato de tabular, completar los nombres de los archivos y otras cosas en mi sesión remota, el shell intenta usar terminaciones disponibles en la máquina local en lugar de en la máquina remota.Finalización de tabulación en las sesiones SSH en modo shell de Emacs

Por ejemplo, si el archivo existe ~/foobar en la máquina local y ~/frob existe en la máquina remota, escribiendo y presionando ~/f resultados de tabulación en ~/foobar en lugar de completar correctamente. Si utilizo ssh fuera de emacs y pruebo lo mismo, obtengo la finalización correcta de ~/frob en su lugar.

¿Cómo puedo obtener la finalización de pestañas para completar la forma en que lo hace en sesiones ssh normales?

Nota posterior: M-x cd RET /ssh:host.example.com:/path/to/me también parece empujar en ser capaz de tratar con gracia con la implementación del tabulador.

+0

posible duplicado de [Emacs shell remoto] (http://stackoverflow.com/questions/1134149/emacs-remote-shell) –

Respuesta

10

emacs no puede rastrear el directorio actual (predeterminado-direcotry) cuando ssh-ing a otras máquinas.

También podemos establecer default-directory a un nombre de archivo vagabundo como /ssh: YOURHOST:./Home/dir" en su concha búfer en forma manual

comienzo shell-sesiones en un mecanizado a distancia sobre todo a través de tramp-bookmarks/default-directory cáscara. vagabundo del conjunto de forma automática. Pero hay un error en direcotry seguimiento de archivos remotos, que se fija en el tronco (inédito).

http://comments.gmane.org/gmane.emacs.bugs/39082

+0

Esa es exactamente la respuesta que necesitaba, gracias. –

+0

gracias jürgen! Por cierto, puede respaldar esa corrección de errores de seguimiento de directorios con esta elisp: (add-hook 'comint-mode-hook (lambda() (set (make-local-variable' comint-file-name-prefix) (o (file-remote-p default-directory) "")))) – ryan

+0

¿Qué quiere decir con 'tramp-bookmarks/shell'? –

9

En lugar de ejecutar M-x shell y ejecutar ssh en la computadora remota, visite un directorio en la computadora remota (usando Tramp) y luego ejecute M-x shell en ese búfer de Dired.

+0

Sin duda lo intentaré la próxima vez que me encuentre con este escenario. –

Cuestiones relacionadas