是否可以使用远程配置文件启动emacs?

时间:2010-12-04 06:53:06

标签: emacs tramp

我在各个公司工作的服务器上有不同的特定于工作的.emacs配置文件。这些包是由于各种原因,我不想在我的机器上本地存储。有没有办法使用其中一个远程目录启动emacs,就好像它是本地的一样?

Tramp非常适合实际编辑远程文件,就好像它们是本地的一样 - 现在我希望能够以同样的方式启动整个emacs编辑器。

3 个答案:

答案 0 :(得分:6)

出于好奇,我刚才给了这个:

emacs -q --load "/ssh:USER@HOSTNAME:.emacs.d/init.el"

这很有效,但是远程init.el正在设置像“〜/ .emacs.d / vendor /”这样的加载路径,所以真正的init文件需要知道它设置的路径和文件名需要相对于共同的基础。此基数可以通过公共变量设置,因此请尝试:

emacs -q --eval '(setq init-base "/ssh:USER@HOSTNAME:") (load (concat init-base ".emacs.d/init.el"))'

然后在远程配置中,将init-base添加到它设置的应该是远程的任何路径或文件名。

答案 1 :(得分:3)

  

使用其中一个远程目录启动emacs,就好像它是本地

一样

如果服务器是unix / linux服务器并且你有ssh访问权限,那么你可以试试SSH Filesystem。然后,您可以将服务器安装到本地目录,例如:

> sshfs server1: ~/remote/server1 
> sshfs server2: ~/remote/server2

然后您可以使用emacs --no-init-file --load ~/remote/servers2/.emacs启动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

显然这个脚本取决于上面的坐骑。

答案 2 :(得分:2)

您可能会发现SO问题Originate edit of remote file using emacs tramp from ssh session正在要求解决相关问题。也许那里的答案可能会给你你想要的东西,即你可以附加到远程机器上运行的emacs。