Завершение вкладки в сеансах SSH в режиме командной строки Emacs

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

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

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

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

Ответ 1

Emacs не может отслеживать текущий каталог (каталог по умолчанию) при подключении к другим компьютерам.

Вы можете установить default-directory на имя файла бродяги, например /ssh: YOURHOST: /home/dir " в вашем текущем буфере оболочки вручную.

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

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

Ответ 2

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