5

Я считаю, что лучше всего запускать мои оболочки на удаленных машинах в emacs с помощью TRAMP (использование команды ssh в локальной оболочке не работает для моих нужд). Однако я знаю, как запустить оболочку TRAMP, только если сначала захожу в удаленный файл с помощью C-x C-f а затем выполняю M-x shell из этого буфера. Однако я хотел бы открыть оболочку на удаленном компьютере, используя TRAMP, перед открытием любого файла на этом удаленном хосте, но не могу найти объяснения того, как это сделать в моих поисках. Возможно ли это сделать?

3 ответа3

4

Tramp вступает в игру, когда каталог по умолчанию является удаленным. Таким образом, вы можете изменить его, как если бы вы открывали удаленный файл (или каталог) заранее.

Но вы можете написать небольшую команду, например:

(defun my-shell () (interactive) (let ((default-directory "/ssh:user@host:")) (shell)))

Тогда вы можете позвонить M-x my-shell

2

Я использую 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/")
0

Несмотря на то, что это не сделано слишком ясно в руководстве, C-u M-x shell позволяет указать имя буфера оболочки и, что более важно, в вашем случае позволяет указать Default directory по умолчанию , который может принимать строку так же, как Tramp /ssh:server:/my/path .

Альтернативой является открытие dired (C-x d), а не реального файла, если вы используете M-x shell из каталога, оболочка открывается с контекстом dired каталога.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .