Каков лучший способ открыть удаленные файлы с помощью emacs и ssh


я подключаюсь к удаленной машине с ssh user@192.168.1.5. Когда мне нужно открыть файл на удаленной машине, я делаю, например,

emacs /usr/share/nginx/html/index.html

и это открывает index.html файл в оболочке. Я заметил, что некоторые команды emacs работают, но другие не работают. Например, C-w не работает; M-< не работает. Как я могу это исправить, и каков наилучший способ работы с emacs и ssh?

я нашел этот вопрос, но это заставило меня более запутанной.

6 53

6 ответов:

обычно я предпочитаю открывать удаленные файлы из локального экземпляра Emacs.

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

для ssh, вы можете ввести C-x C-f. Теперь, в minubuffer вы хотите ввести /ssh:user@host:/path/to/file (обратите внимание, что завершение вкладки будет работать, как только вы начнете вводить путь. Также обратите внимание на ведущий / символ). Смотрите полностью документы здесь.

в вашем примере это будет:

C-x C-f /ssh:user@192.168.1.5:/usr/share/nginx/html/index.html

теперь вы можете редактировать удаленные файлы через ssh в Emacs при использовании локальной конфигурации и любых установленных пакетов и т. д...

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

(defun connect-remote ()
  (interactive)
  (dired "/user@192.168.1.5:/"))

Это откроет dired буфер на удаленной машине. Вы можете перемещаться по этому буферу как вы бы местный один.

если вы настроили ключи ssh для удаленной машины, вам даже не нужно вводить пароль.

если у вас есть куча удаленных машин, вы можете дать некоторое узнаваемое имя для каждой функции, например,connect-cupcake,connect-kitkat и использовать smex пакета для завершения.

и добавить к сообщению @abo-abo о "ярлыках"--

используйте закладки Emacs. просто создавайте закладки обычно, когда вы посещаете удаленный файл или каталог. Тогда просто используйте C-x r b чтобы перейти к удаленной закладке, имя которой вы предоставляете (с завершением).

если вы используете закладка+ затем удаленные закладки выделяются специально в *Bookmark List*, Так что вы можете узнать их больше легко. И удаленные закладки, которые должны быть доступны su или sudo (root) выделены по-разному.

если вы используете Dired+ затем вы также можете быстро пометить несколько удаленных файлов или каталогов, посетив их содержащий удаленный каталог в Dired, отметив их и нажав C-x b. Нет необходимости давать закладки имена; они названы в честь файлов. Даже если вы никогда не используете эти закладки для перехода к удаленные файлы, вы можете использовать их с закладка+теги для организации файлов и, таким образом, работать на подмножествах из них.

если вы используете сосульки затем всякий раз, когда вы используете команду для перехода к закладке, вы можете сузить кандидатов на завершение до тех, которые удалены, нажав C-M-@ во время завершения.

оригинальный плакат выразил заинтересованность в открытии удаленных файлов в качестве пользователя root. Это можно сделать с помощью команды:

C-x C-f /ssh:you@remotehost|sudo:remotehost:/path/to/file RET

дополнительную документацию можно найти здесь:https://www.emacswiki.org/emacs/TrampMode#toc14

простой ответ, который фокусируется на удаленной машине:

Если я планирую сделать все мои emacs работать на удаленной машине, я использую

ssh -X username@hostname

а затем запустите emacs в удаленном сеансе, отображая обратно на моем локальном компьютере. Это старый вопрос, но я хотел бросить это для полноты. Конечно, есть некоторые проблемы с конфигурацией xhost / X, но во многих сетях это будет работать сразу же!

режим SSH для emacs - это то, что вы ищете.

Как только вы его настроите, вы просто запустите

M-x ssh RET hostname RET

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

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

он отслеживает, в каком каталоге вы находитесь, поэтому, когда вы хотите открыть файл из каталог, который вы смотрите на него, автоматически запускается в нужном каталоге, и вам просто нужно ввести имя файла.

Emacs Wiki слишком подробнее.