2011-01-13 4 views
10

Мой текущий шаблон использования emacs приводит к тому, что у меня есть несколько буферов в режиме оболочки, каждый из которых запускает сеанс ssh. Однако я столкнулся с проблемой, но, когда я пытаюсь включить имена файлов и другие вещи в удаленном сеансе, оболочка пытается использовать доработки, доступные на локальной машине, а не на удаленной машине.Завершение вкладки В сеансах SSH с оболочным режимом Emacs

Например, если файл ~/foobar существует на локальной машине и ~/frob существует на удаленном компьютере, набрав в ~/f и нажав результаты вкладки в ~/foobar вместо завершения правильно. Если я использую ssh вне emacs и попробую сделать то же самое, я получаю правильное завершение ~/frob.

Как я могу получить завершение табуляции, чтобы завершить способ, который он делает в обычных сеансах ssh?

Позже примечание: M-x cd RET /ssh:host.example.com:/path/to/me также, похоже, подталкивает его к возможности грациозно обрабатывать вкладку.

+0

Возможный дубликат [Emacs remote shell] (http://stackoverflow.com/questions/1134149/emacs-remote-shell) –

ответ

10

emacs не может отслеживать текущий каталог (по умолчанию-directcotry), когда ssh-ing на другие машины.

Вы можете установить по умолчанию каталога- к файлу имя-бродяги, как /SSH: YOURHOST:./Дома/реж» на текущей оболочке буфере вручную

я начинаю оболочечную-сессию на удаленный Maching в основном через бродягу-закладка/по умолчанию каталог-оболочки. Tramp Сета автоматически. Но есть ошибка в direcotry отслеживание удаленных файлов, который закреплен в багажнике (неизданный).

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

+0

Это в значительной степени именно тот ответ, который мне нужен, спасибо. –

+0

спасибо jürgen! btw, вы можете выполнить резервное копирование этой ошибки исправления каталогов с помощью этого elisp: (hook-com-mode-hook add-hook (lambda() (set (make-local-variable 'comint-file-name-prefix) (или (file-remote-p default-directory) "")))) – ryan

+0

Что вы подразумеваете под 'tramp-bookmarks/shell'? –

9

Вместо того, чтобы запускать оболочку M-x и запускать ssh на удаленный компьютер, зайдите в каталог на удаленном компьютере (используя Tramp), а затем запустите оболочку M-x в этом Dired буфере.

+0

Я обязательно попробую, чтобы в следующий раз я столкнулся с этим сценарием. –