这可能是一个有点过时的问题了.我使用tramp来编辑远程文件,但是我也打开了几个终端ssh-ing到那个远程机器以及其他工作(我在emacs中运行ssh shell时遇到了问题).
通常在终端工作期间我想编辑一些文件,我当前的程序是复制文件名,然后使用emacs tramp打开该文件(在以tramp格式获取文件路径后乱七八糟).这对于快速编辑来说太多了,并且在路径处理部分中容易出错.
问题是:我可以在远程ssh会话中执行一些带有文件名的命令,将其转换为tramp格式(这是简单的部分),并运行本地命令(如emacsclient blahblahblah),以便我可以使用tramp编辑远程文件我当地的emacs?
我不确定我是否足够清楚.我不想在远程计算机上运行emacs(在终端上或通过x会话),但我确实想从远程提示符向本地emacs发送文件,如下所示:
user@remote-machien ~/ $ run_local_emacs somefile
# then the file "/ssh:user@remote-machine/:/home/user/somefile" shows up
# in my local emacs
Run Code Online (Sandbox Code Playgroud)
Tre*_*son 12
您可以将emacs-server设置为使用tcp连接(而不仅仅是本地套接字),然后在远程端,告诉emacsclient连接到该tcp连接:
在你的.emacs中
(setq server-use-tcp t)
(setq server-host "name_of_local_machine")
(server-start)
Run Code Online (Sandbox Code Playgroud)
然后在远程方面:
emacsclient -f ~/.emacs.d/server/server /`hostname`:/path/to/local/file
Run Code Online (Sandbox Code Playgroud)
上面的调用emacsclient将在"本地"机器中运行的Emacs中的"远程"机器上调出本地文件.显然,您可以将调用包装在emacsclient您想要的任何类型的脚本中.
如果您的主目录在远程计算机上不可见,则需要自定义server-auth-dir变量,如下所示:
(setq server-auth-dir "/some/path/visible/on/both/machines")
Run Code Online (Sandbox Code Playgroud)
有关更多文档,请参阅Emacsclient选项.
| 归档时间: |
|
| 查看次数: |
3552 次 |
| 最近记录: |