Завершение вкладки в сеансах 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 буфере.