您的位置:首页
emacs使用本地emacs server模式打开远程文件
2017-06-10 21:16
429 查看
使用emacs的用户都知道,一般要打开远程机器上的文件要使用TrampMode模式,调用方式例如以下:
但,这样打开有点麻烦,你必要输入username和机器ip等
emacs提供了一种client/server的模式,当我们在本地打开一个emacs,能够将它作为server执行
然后,在本地机器的其它都方要用emacs的时候,如在terminal中要调用emacs,仅仅须要使用emacsclient就能够了.
我希望的情形是这种:
1. 把本地机器的emacs当成一个server
2. 用ssh登录一台远程机器
3. 在远程机器上使用emacsclient 调用本地的emacs server
4. 然后,我们就能够在本地机器上编辑远程机器上的文件了
在网上找了一个人给出的解决方法,链接 (墙外),现把步骤整理例如以下:
注:这里我远程机器HOST名为:yoks 登录的username为:lisp
1. 设置Port Forwarding(或者称为SSH Tunneling),编辑本都机器的 ~/.ssh/config 增加下面内容
这里将本地的9999port与远程的9999port进行影射(map)
2. 配制本地机器的emacs,将下面代码增加到你的emacs配制文件(.emacs 或 init.el)中
这里一方面启动emacs server模式,将其tcpport设置为9999. 然后将server文件复制到远程机器(lisp@yoks)上
同一时候在本地机器上重新启动emacs
3. 在远程机器上编辑一个下面脚本,名字为 ec, 并增加可运行权限
4. 用ssh登录远程机器,然后用ec打开一个文件,我们发现,文件内容出如今了本地机器的emacs中了,例如以下:
本地的emacs截图例如以下,这样就方便在本地机器上编辑这个文件了
能够看到它的地址为: /ssh:yoks:/home/lisp 这个地址和我们用TRAMP模式打开的一模一样.
注意:我的机器环境为Linux
C-x C-f /remotehost:filename RET (or /method:user@remotehost:filename)
但,这样打开有点麻烦,你必要输入username和机器ip等
emacs提供了一种client/server的模式,当我们在本地打开一个emacs,能够将它作为server执行
然后,在本地机器的其它都方要用emacs的时候,如在terminal中要调用emacs,仅仅须要使用emacsclient就能够了.
我希望的情形是这种:
1. 把本地机器的emacs当成一个server
2. 用ssh登录一台远程机器
3. 在远程机器上使用emacsclient 调用本地的emacs server
4. 然后,我们就能够在本地机器上编辑远程机器上的文件了
在网上找了一个人给出的解决方法,链接 (墙外),现把步骤整理例如以下:
注:这里我远程机器HOST名为:yoks 登录的username为:lisp
1. 设置Port Forwarding(或者称为SSH Tunneling),编辑本都机器的 ~/.ssh/config 增加下面内容
Host yoks User lisp ControlMaster auto ControlPath ~/.ssh/yoks.sock RemoteForward 9999 localhost:9999
这里将本地的9999port与远程的9999port进行影射(map)
2. 配制本地机器的emacs,将下面代码增加到你的emacs配制文件(.emacs 或 init.el)中
(setq server-use-tcp t server-port 9999) (require 'server) (defun server-start-and-copy () "start server and copy auth files" (when (and (fboundp 'server-running-p) ; function exists. (not (server-running-p))) (server-start) ; emacs as server mode (when (file-exists-p "/lisp@yoks:~/.emacs.d/server/server") (delete-file "/lisp@yoks:~/.emacs.d/server/server")) (copy-file "~/.emacs.d/server/server" "/lisp@yoks:~/.emacs.d/server/server") )) (add-hook 'emacs-startup-hook 'server-start-and-copy)
这里一方面启动emacs server模式,将其tcpport设置为9999. 然后将server文件复制到远程机器(lisp@yoks)上
同一时候在本地机器上重新启动emacs
3. 在远程机器上编辑一个下面脚本,名字为 ec, 并增加可运行权限
#!/bin/bash params=() for p in "$@"; do if [ "$p" == "-n" ]; then params+=( "$p" ) elif [ "${p:0:1}" == "+" ]; then params+=( "$p" ) else params+=( "/ssh:yoks:"$(readlink -f $p) ) fi done emacsclient "${params[@]}"
4. 用ssh登录远程机器,然后用ec打开一个文件,我们发现,文件内容出如今了本地机器的emacs中了,例如以下:
本地的emacs截图例如以下,这样就方便在本地机器上编辑这个文件了
能够看到它的地址为: /ssh:yoks:/home/lisp 这个地址和我们用TRAMP模式打开的一模一样.
注意:我的机器环境为Linux
相关文章推荐
- emacs使用本地emacs server模式打开远程文件
- ios开发之使用UIWebView打开本地的HTML、txt、PDF、PPT文件、打开远程的共享资源
- 使用SecureCRT在远程主机和本地之间传输文件 - [SHELL]
- 使用 sshfs 映射远程 ssh 文件系统到本地
- C/C++/Python等 使用二进制模式打开文件与不使用二进制模式的区别
- 用ASP简单封装了几个函数,使用ServerXMLHTTP把网络上的文件保存到本地服务器.
- 使用JAVA关联打开本地应用文件
- 使用XMLHttp和ADODB.Stream取得远程文件并保存到本地
- 〖Linux〗使用ssh登录远程主机,并在本地打开远程图形界面
- 使用windows远程桌面连接拷贝远程电脑上文件到本地的方法
- DB2远程客户端无法使用import导入本地数据文件解决方案
- 关于office 2013的使用,在打开word文件的时候,需要进入安全模式才能启动WORD的解决办法
- 使用 sshfs 映射远程 ssh 文件系统到本地
- 文件使用二进制模式打开情况下的换行的方法
- 在 Ubuntu 上使用 sshfs 映射远程 ssh 文件系统为本地磁盘
- 在linux系统中使用windows应用程序打开本地文件
- 使用 sshfs 映射远程 ssh 文件系统到本地
- 使用rsync将本地文件更新到远程游…
- ubuntu下如何使用sshfs加载远程服务器目录到本地文件系统
- oracle 10g 使用expdp network_link导出远程数据库到本地文件