Я подключаюсь к удаленной машине с помощью ssh user@192.168.1.5
. Когда мне нужно открыть файл на удаленном компьютере, я делаю это, например,
emacs /usr/share/nginx/html/index.html
и это открывает index.html
файл в оболочке. Я заметил, что некоторые команды emacs работают, а другие нет. Например, C-w
не работает; M-<
не работает. Как я могу это исправить и как лучше всего работать с emacs и ssh?
Я нашел этот вопрос, но он еще больше сбил меня с толку.
M-x describe-mode
.Ответы:
Обычно я предпочитаю открывать удаленные файлы из локального экземпляра Emacs.
При запуске Emacs на вашем локальном компьютере открытие удаленного файла через ssh не сильно отличается от открытия любого другого файла, за исключением немного другого синтаксиса .
Для ssh вы можете ввести
C-x C-f
. Теперь в минибуфере, который вы хотите ввести/ssh:user@host:/path/to/file
(обратите внимание, что завершение табуляции будет работать, когда вы начнете вводить путь. Также обратите внимание на ведущий/
символ). См. Полную документацию здесь .В вашем примере это будет:
C-x C-f /ssh:user@192.168.1.5:/usr/share/nginx/html/index.html
Теперь вы можете редактировать удаленные файлы через ssh в Emacs, используя вашу локальную конфигурацию и любые установленные пакеты и т. Д.
источник
tramp
и это одна из самых полезных вещей, которые вы когда-либо будете использовать. Он даже компилируется удаленно!index.html
потому что он говорит, что буфер доступен только для чтения. Но я могу редактировать тот же файл, если открою его на удаленном компьютере. Кстати, когда я открыл файл сC-x C-f /ssh:user@host filename
ним, меня спросили пароль./method:user@host#port:filename
Чтобы добавить к ответу выше, вы можете написать ярлыки для компьютеров, которые вы часто используете:
(defun connect-remote () (interactive) (dired "/user@192.168.1.5:/"))
Это откроет
dired
буфер на удаленной машине. Вы можете перемещаться по этому буферу, как по локальному.Если вы настроили ключи ssh для удаленного компьютера, вам даже не нужно вводить пароль.
Если у вас есть несколько удаленных машин, вы можете дать узнаваемое имя каждой функции, например
connect-cupcake
,connect-kitkat
и использоватьsmex
package для завершения.источник
/usr/share/nginx/html/index.html
если открою его на удаленной машине; но когда я открываю его с помощью ssh, он доступенindex.html
только для чтения. Почему это?/usr/share/
.C-x C-f /sudo ssh:user@host filename
но это не сработало./usr/share/nginx/html/
папки с расширениемchown
./etc/nginx/sites-available/example.com.conf
отредактировал его, сохранил и закрыл. Теперь я его снова открыл, и на этот раз не могу его редактировать? Я предполагаю, что это связано с разрешениями. Вы можете помочь мне понять, почему это происходит?А чтобы добавить в пост @ abo-abo о "ярлыках" -
Используйте закладки Emacs. Просто создайте закладки обычно, когда вы посещаете удаленный файл или каталог. Затем просто используйте
C-x r b
для перехода к удаленной закладке, имя которой вы указываете (с завершением).Если вы используете Bookmark +, то удаленные закладки выделяются специальным образом
*Bookmark List*
, чтобы вам было легче их распознать. А удаленные закладки, к которым необходимо получить доступ с помощьюsu
илиsudo
(root
), выделяются по-другому.Если вы используете Dired +, вы также можете быстро добавить в закладки несколько удаленных файлов или каталогов, посетив их удаленный каталог в Dired, отметив их и нажав
C-x b
. Не нужно давать названия закладкам; они названы в честь файлов. Даже если вы никогда не используете эти закладки для перехода к удаленным файлам, вы можете использовать их с тегами Bookmark + для организации файлов и, таким образом, работы с их подмножествами.Если вы используете Icicles, то всякий раз, когда вы используете команду для перехода к закладке, вы можете сузить список кандидатов для завершения до тех, которые являются удаленными, нажав
C-M-@
во время завершения.источник
Оригинальный плакат выразил заинтересованность в открытии удаленных файлов от имени пользователя root. Это можно сделать с помощью команды:
C-x C-f /ssh:you@remotehost|sudo:remotehost:/path/to/file RET
Дополнительную документацию можно найти здесь: https://www.emacswiki.org/emacs/TrampMode#toc14
источник
Простой ответ, касающийся удаленной машины:
Если я планирую работать с emacs на удаленной машине, я использую
а затем запустить emacs в удаленном сеансе, чтобы снова отобразить на моем локальном компьютере. Это старый вопрос, но я хотел бы добавить его для полноты картины. Конечно, есть некоторые проблемы с конфигурацией xhost / X, но во многих сетях это сработает сразу же!
источник
Режим SSH для emacs - это то, что вы ищете.
Как только вы его настроите, вы просто запустите
Затем он дважды запрашивает ваш пароль (один раз для командной строки, один раз для загрузки файлов).
По большей части вы можете обращаться с ней как с любой другой оболочкой (неинтерактивная и с некоторыми незначительными отличиями, но это все).
Он отслеживает, в каком каталоге вы находитесь, поэтому, когда вы хотите открыть файл из каталога, который вы просматриваете, он автоматически запускается в правильном каталоге, и вам просто нужно ввести имя файла.
Emacs Wiki также имеет больше информации.
источник