Непосредственно открыть удаленную оболочку с бродягой в Emacs
4433
jmlorenzi
Я считаю, что лучше всего запускать мои оболочки на удаленных машинах в emacs с помощью TRAMP (использование sshкоманды в локальной оболочке не работает для моих нужд). Тем не менее, я знаю, как запустить оболочку TRAMP, только если сначала захожу в удаленный файл, C-x C-fа затем делаю M-x shellиз этого буфера. Однако я хотел бы открыть оболочку на удаленном компьютере, используя TRAMP, перед открытием любого файла на этом удаленном хосте, но не могу найти объяснения того, как это сделать в моих поисках. Возможно ли это сделать?
Пожалуйста, добавьте дополнительное объяснение того, что вы ищете. Понятно, что вы более продвинуты, чем просто хотите узнать, как подключиться к ssh на удаленной машине из буфера оболочки, но это направление, в котором ваш вопрос ведет читателя. Итак, вы хотите, чтобы функция открывала буфер оболочки и автоматически вставляла ssh в вашу удаленную машину - чтобы вы были в командной строке и на пути к удаленному серверу? Или вы хотите, чтобы буфер режима оболочки уже был открыт, а затем просто нажмите команду автоматического входа? Вы используете `sshpass`? Вы бы предпочли вводить пароль каждый раз?
lawlist 9 лет назад
0
Спасибо @lawlist! Я перефразировал вопрос в надежде, что он станет более понятным. Чтобы ответить на ваши вопросы: Мне нужен какой-то способ, который бы позволил tramp открыть буфер удаленной оболочки на указанной мной машине. Ожидаемое поведение - emacs запрашивает мой пароль, когда я пытаюсь это сделать.
jmlorenzi 9 лет назад
0
3 ответа на вопрос
4
Michael Albinus
Tramp вступает в игру, когда каталог по умолчанию является удаленным. Таким образом, вы можете изменить его, как если бы вы открывали удаленный файл (или каталог) заранее.
Но вы можете написать небольшую команду, например:
Если emacs запускается в Windows и вы хотите войти в систему на Linux-хосте, вы можете установить с помощью `Mx customize-variable` `licit-shell-file-name` значение` \ bin \ bash`, чтобы избежать пропущенных ошибок оболочки.
kwarnke 6 лет назад
0
2
mandark
I use dired to access the remote machine and open a shell there.
(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>\""))))
Example:
(anr-shell "/vagrant@localhost#2222:/vagrant/")
Пожалуйста, перепечатайте ответ здесь, так как ссылки на фактический ответ не рекомендуется, чтобы избежать гниения ссылок
Jarmund 9 лет назад
0
Ответ был размещен.
mandark 9 лет назад
0
Голосование изменилось соответственно.
Jarmund 9 лет назад
0
0
Phil
Хотя в руководстве это не сделано слишком ясно, это C-u M-x shellпозволяет вам указать имя буфера оболочки, и, что более важно, в вашем случае позволяет вам указать Default directory, который может принимать строку точно так же, как Tramp /ssh:server:/my/path.
Альтернативой является открытие dired ( C-x d), а не реального файла, если вы M-x shellиз каталога, оболочка открывается с контекстом каталога dired.