VSCode这种工作模式,是不是大部分工作都在server端做的?比如数据处理和文件操作。本地实例变成了一个简单的客户端负责显示结果?
如果这样的话,貌似难度还可以,emacs官方有这方面的计划吗?
----------------------- 最新更新
今天试了下emacs server模式,配合ssh socket转发,成功实现了client和server分离,即两者运行在不同的物理机上。不过客户端是在wsl1里测试的,没法用GUI,理论上GUI也是可以的。
说明emacs内部已经支持远程开发机制了,只是因为通信不够安全或者其他原因,所以未开放。现在只用把通信加密一下,就直接可以用了。
这确实是个痛点, 连 server 开发这块目前确实是 vscode 最方便…
现在有了AI辅助,开发个类似这样的功能应该是问题不大的。
希望能早日支持,非常需要
trump rpc 了解下 90%场景下性能接近,可控性拉满
零难度
直接搞台机器装上 emacs 等工具,远程使用就 ssh 用 tui, 岂不美哉?这才是真正的远程开发 ,vs.. 等垃圾工具的远程开发,不过是假远程的儿戏
真远程是一切东西都在远程
你要是嫌远程环境难以维护/迁移麻烦,那么用 nspawn 包装下
2 个赞
想用GUI,终端的剪切板太麻烦了,配置了一下调用命令,又太卡了
这种模式,lsp服务端运行在哪里?索引文件方便吗?
并不麻烦,你可以参考下那个主题里面的评论,最近我贴了 一个非常微小但奏效的配置,以解决剪贴板问题。
如果实在不想用 tui,也可以,确保你的带宽足够,然后 waypipe 转发
再不济,直接运行一个无头桌面,vnc 过去用,岂不美哉?
我试了你那个帖子里的方法,好像不行。
另外,帧率很重要,有些方法看似能用,但是体验上比较一般,比如WSL2的GUI,体验很差,不流畅
hiecaq
2026 年6 月 27 日 10:08
12
我现在工作上就是这么个使用场景:
WSL2里的GUI Emacs → TRAMP (ssh) 内网 → TRAMP (docker) 编译/运行环境
tramp-default-proxies-alist设置下就行
没用tramp-rpc,我觉得性能完全可以接受
docker里装了对应的lsp server之后eglot开箱即用
明显能感觉到慢的主要是consult-grep之类的,可以开大点异步等待时间
consult-grep类似这种,grep命令是在本地运行的还是在远端运行的?如果本地运行,那卡顿和延迟可想而知。还有lsp,分析和索引工程代码。。。
今天试了下emacs server模式,配合ssh socket转发,成功实现了client和server分离,即两者运行在不同的物理机上。不过客户端是在wsl1里测试的,没法用GUI,理论上GUI也是可以的。
说明emacs内部已经支持远程开发的机制了,只是因为通信不够安全或者其他原因,所以未开放。现在只用把通信加密一下,就直接可以用了。 @hiecaq
1 个赞
我是觉得Emacs的远程不太好用。我现在直接利用rsync同步配合ssh HOST [test-command]。利用make类工具一行执行,体验倒也还好
??? 这怎么做到的?
Emacs server 不是真正的 server 模式吧?
麻烦请你出一个使用教程…
Can TRAMP be as efficient as ssh + tmux + emacs? : r/emacs
https://www.reddit.com/r/emacs/comments/dx7d9l/can_tramp_be_as_efficient_as_ssh_tmux_emacs/
You can use X11 Windows forwarding, by running an X11 server on your Mac e.g. I use Quartz, and you have to run an Emacs on your Linux server that has support for X Windows. Then to get the persistence, as you get from Tmux, you can run Emacs in “server” mode, and start each Gui instance using emacs-client.
LdBeth
2026 年6 月 30 日 03:04
18
不冲突,emacsclient 确实可以连上不在本地的 Emacs,当然因为 client 没有任何 GUI 能力只能用 TUI。
ssh本来就是加密信道,你用ssh port forward本来就是为了开放给网络用户用的,ssh login直接起tui才是管理员私用的。
gui理论上并不行,因为emacsclient并没有gui画图能力,除非你开个ssh Xforward把server端的窗口给画到client端,负责画图和事件传递的是X窗口系统,emacs内部并没有一个跟画图解耦的event层。
首先,ssh服务端的tcp转发功能要开启。然后在服务端启动emacs server。
客户端机器操作:先用ssh创建一个sock映射,即把服务端的unix sock映射到本地,比如~/.emacs.d/server/server, 然后就可以运行emacsclient了。ssh映射sock的命令如下:
ssh -L /home/remote/.emacs.d/server/server:/home/local/.emacs.d/server/server remote_user@remote_host