Можно ли запустить emacs с помощью файла удаленной конфигурации?

У меня есть разные файлы конфигурации .emacs для конкретной работы на серверах, на которых я работаю в разных компаниях. Это пакеты, которые по разным причинам я не хочу хранить локально на своей машине. Есть ли способ запустить emacs, используя один из этих удаленных каталогов, как если бы он был локальным?

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


person Eric Nguyen    schedule 04.12.2010    source источник
comment
Также связано: загрузить .emacs с URL-адреса   -  person phils    schedule 25.10.2012


Ответы (3)


запустить emacs, используя один из этих удаленных каталогов, как если бы он был локальным

Если это серверы unix / linux и у вас есть доступ по ssh, вы можете попробовать файловую систему SSH. Затем вы можете смонтировать серверы в локальные каталоги, например:

> 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

Очевидно, что этот сценарий зависит от указанных выше креплений.

person slu    schedule 04.12.2010
comment
Вы можете расширить этот подход, просто используя sshfs для монтирования соответствующего удаленного каталога .emacs.d в .emacs.d на локальном компьютере, например sshfs server1: .emacs.d ~ / .emacs.d - это избавляет от необходимости передавать аргументы slu, упомянутые выше. Чтобы использовать локальные файлы инициализации, отключите любую файловую систему sshfs из ~ / .emacs.d и выполните ln -s ~ / .emacs.d.local ~ / .emacs.d. Наконец, используя .emacs.d / init.el вместо ~ / .emacs, вы также можете получить файлы инициализации для конкретной машины. - person jlf; 04.12.2010

Из любопытства я просто попробовал:

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 к любому пути или имени файла, которые он устанавливает, которые должны быть удаленными.

person spacebat    schedule 25.10.2012

Вы можете найти вопрос SO Начать редактирование удаленного файл с использованием emacs tramp из сеанса ssh запрашивает решение связанной проблемы. Возможно, ответы там могут дать вам то, что вы хотите, а именно, вы можете подключиться к emacs, запущенному на удаленной машине.

person Trey Jackson    schedule 04.12.2010