我在服务器上有不同的特定于工作的.emacs配置文件,我为各种公司工作.这些包是由于各种原因,我不想在我的机器上本地存储.有没有办法使用其中一个远程目录启动emacs,就好像它是本地的?
Tramp非常适合实际编辑远程文件,就好像它们是本地文件一样 - 现在我希望能够以相同的方式启动整个emacs编辑器.
出于好奇,我刚才给了这个:
emacs -q --load "/ssh:USER@HOSTNAME:.emacs.d/init.el"
Run Code Online (Sandbox Code Playgroud)
这很有效,但是远程init.el正在设置像"〜/ .emacs.d/vendor /"这样的加载路径,所以真正的init文件需要知道它设置的路径和文件名需要相对于公共基础.此基数可以通过公共变量设置,因此请尝试:
emacs -q --eval '(setq init-base "/ssh:USER@HOSTNAME:") (load (concat init-base ".emacs.d/init.el"))'
Run Code Online (Sandbox Code Playgroud)
然后在远程配置中,前置init-base到它应设置为远程的任何路径或文件名.
使用这些远程目录之一启动 emacs,就好像它是本地目录一样
如果服务器是 unix/linux 服务器并且您具有 ssh 访问权限,那么您可以尝试SSH Filesystem。然后您可以将服务器挂载到本地目录,例如:
> sshfs server1: ~/remote/server1
> sshfs server2: ~/remote/server2
Run Code Online (Sandbox Code Playgroud)
然后你就可以启动 emacsemacs --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"))
Run Code Online (Sandbox Code Playgroud)
然后像这样启动 emacs:emacs --no-init-file --load ~/.emacs.server1.el
显然这个脚本依赖于上面的安装。
| 归档时间: |
|
| 查看次数: |
1158 次 |
| 最近记录: |