Можно ли запустить emacs, используя удаленный файл конфигурации?
У меня есть разные файлы конфигурации.emacs для конкретной работы на серверах, где я работаю в разных компаниях. Это пакеты, которые по разным причинам я не хочу хранить локально на моей машине. Есть ли способ запустить emacs, используя один из этих удаленных каталогов, как если бы он был локальным?
Tramp отлично подходит для редактирования удаленных файлов, как если бы они были локальными - теперь я хотел бы иметь возможность запускать целый редактор emacs таким же образом.
3 ответа
запустите emacs, используя один из этих удаленных каталогов, как если бы он был локальным
Если серверы являются серверами Unix/ Linux и у вас есть доступ по SSH, вы можете попробовать SSH Filesystem. Затем вы можете подключить серверы к локальным каталогам, например:
> sshfs server1: ~/remote/server1
> sshfs server2: ~/remote/server2
Тогда вы можете начать Emacs с emacs --no-init-file --load ~/remote/servers2/.emacs
и так далее.
пакеты, которые по разным причинам я не хочу хранить локально
Если пакеты установлены в.emacs.d на удаленных компьютерах, вы можете создать на своем локальном компьютере сценарии, подобные следующим:
;; .emacs.server1.el
(add-to-list 'load-path (expand-file-name "~/remote/server1/.emacs.d"))
(add-to-list 'load-path (expand-file-name "~/remote/server1/.emacs.d/package1"))
(load (expand-file-name "~/remote/server1/.emacs"))
А затем запустите emacs так: emacs --no-init-file --load ~/.emacs.server1.el
Очевидно, что этот скрипт зависит от приведенных выше креплений.
Из любопытства я просто попробовал:
emacs -q --load "/ssh:USER@HOSTNAME:.emacs.d/init.el"
Это сработало, однако удаленный init.el устанавливает пути загрузки, такие как "~/.emacs.d/vendor/", поэтому на самом деле файл инициализации должен знать, что пути и имена файлов, которые он устанавливает, должны относиться к общей базе, Эта база может быть установлена общей переменной, поэтому попробуйте:
emacs -q --eval '(setq init-base "/ssh:USER@HOSTNAME:") (load (concat init-base ".emacs.d/init.el"))'
Затем в удаленном конфиге добавьте init-base
к любому пути или имени файла, который он устанавливает, который должен быть удаленным.
Вы можете найти вопрос SO. Исходное редактирование удаленного файла с использованием emacs tramp из сеанса ssh запрашивает решение связанной проблемы. Возможно, ответы там могут дать вам то, что вы хотите, а именно, вы можете подключиться к emacs, работающему на удаленной машине.