Непосредственно открыть удаленную оболочку с бродягой в Emacs
Я считаю, что лучше всего запускать мои оболочки на удаленных машинах в emacs с помощью TRAMP (используя ssh
команда в локальной оболочке не работает для моих нужд). Тем не менее, я знаю, как запустить оболочку TRAMP, только если я впервые посещаю удаленный файл с C-x C-f
а затем сделать M-x shell
из этого буфера. Однако я хотел бы открыть оболочку на удаленном компьютере, используя TRAMP, перед открытием любого файла на этом удаленном хосте, но не могу найти объяснения, как это сделать в моих поисках. Возможно ли это сделать?
3 ответа
Tramp вступает в игру, когда каталог по умолчанию является удаленным. Таким образом, вы можете изменить его, как вы делаете это с открытием удаленного файла (или каталога) заранее.
Но вы можете написать небольшую команду, например так:
(defun my-shell () (interactive) (let ((default-directory "/ssh:user@host:")) (shell)))
Тогда вы можете позвонить M-x my-shell
Я использую dired для доступа к удаленной машине и открытия там оболочки.
Вот функция, которую я использую, взятая и измененная из конфигурации emacs Тихона Джелвиса :
(defun anr-shell (buffer)
"Opens a new shell buffer where the given buffer is located."
(interactive "sBuffer: ")
(pop-to-buffer (concat "*" buffer "*"))
(unless (eq major-mode 'shell-mode)
(dired buffer)
(shell buffer)
(sleep-for 0 200)
(delete-region (point-min) (point-max))
(comint-simple-send (get-buffer-process (current-buffer))
(concat "export PS1=\"\033[33m" buffer "\033[0m:\033[35m\\W\033[0m>\""))))
Пример:
(anr-shell "/vagrant@localhost#2222:/vagrant/")
Вот еще один подход:
M-x cd
изменить каталог по умолчанию буфера на нужный удаленный каталог- взывать
M-x shell
, который откроет оболочку на удаленной машине
Хотя в руководстве не указано слишком четко C-u M-x shell
позволяет указать имя буфера оболочки, и, что более важно, в вашем случае позволяет указать Default directory
, который может взять строку, как Бродяга /ssh:server:/my/path
,
Альтернативой является открытие dired (C-x d
), а не фактический файл, если вы M-x shell
из директории оболочка открывается с контекстом директории dired.