关于emacs简单的多人协作编辑

前段时间尝试了一下, 使用ssh+emacs server的方式, 可以实现简单的多人协作. 每个客户端都通过ssh连接到开发服务器, 然后通过emacsclient打开emacs, 然后多个客户端都可以编辑同一个文件, 简单的文本编辑测试是可以的, 体验有点类似于tmux.

但是更高级一点的编辑就遇到了问题:

  1. lsp补全内容不对, 错乱
  2. company工作不正常, 补全项选中提交后, buffer里插入的是错乱的文本, 特别是有snippet的补全项.

以上问题, 即使在仅有一个客户端的时候也必然出现, 导致没法使用. 最后放弃.

感觉emacsclient有挺多功能限制的, 但没看到官方对这些限制的说明. 不知道这些问题能否解决. 如果能解决的话, 是个不错的多人协作方案.

多人协助的话,gnu elpa 上前一段时间提交了一个包,专门干这个的,你可以去翻翻

看看这个?

这个倒是知道, 其实主要目的不是多人协作, 而是emacsclient这种简单的多客户端模式.

我自己大部分时间在家办公, 家里有一台开发机, 其他两台电脑(一个台机, 一个笔记本)作为客户端, 会连接到开发机上开发. 但是两台客户端不会同时使用.

本来emacsclient这种方式挺适合我的使用场景, 谁知道功能不正常. 所以现在就是ssh过去, 然后运行emacs, 而这样emacs的desktop文件会冲突.

全功能的多人编辑暂时用不着.

我在本地开发时也会启动多个 client 去连一个 Emacs server,倒是没遇到过楼主说的两个问题,按说和 ssh 到远端原理是一样的。

感觉楼主可以先自己 debug,比如执行下 company-diag 看看,lsp 的话 debug 没啥经验,如果不行,试试 citre ?

以前用emacsclient做code review倒是挺好的,单独使用emacsclient也没遇到楼主说的这两个问题。emacsclient功能还是简单很多,为什么不用tmux,然后在本机emacsclient,这样环境更统一,除了GUI的和terminal的差别其他都一样了。

楼主的两个问题应该是配置引起的。

client 的启动过程跟正常启动并不完全相同,我之前就遇到因为 window-system 变量在启动过程中突变,导致配色异常的问题:

1 个赞

有时间我试下linux本地环境, 你的emacs server和client都是运行在终端吗? server是daemon模式启动的吗?

记得当时用company-diag看了, 输出结果和实际显示的补全内容一致, 看上去company正常, lsp补全内容不正常(补全的都是全局变量, 跟当前上下文无关).

tmux会占用一些快捷键, 跟emacs的冲突. emacs server是daemon模式启动的吗?

对了, 我的server启动的时候, 加载了一个desktop会话, 不知道会不会影响.

我的server和client全部在终端运行, 应该不会受GUI方面的差别影响. 也许有一些未知的其他类似因素导致条件判断失效, 这个排查就麻烦了.

对了, server启动的时候, 加载了一个颜色主题, 但是个别颜色不太对, 需要在emacsclient里重新加载一次, 颜色才正常. 但是server的环境变量也设置了TERM变量(systemd服务), 不知道为什么颜色会不太对, 可能就是daemon跟正常启动的差别吧.

tmux快捷键可以配置的,不是问题。emacs用daemon和server-mode都可以的

tmux的按键很多年前已经配置好了, 用了多年, 非常顺手, 不能改了. emacs用的按键太多了, 跑在tmux里感觉不太合适, 不像vim.

不用emacs的快捷键不就号了?M-x 我觉得也不算很慢哪

常见的那几个,容易跟tmux冲突的改一下是不是就行了?而且tmux有固定前缀,emacs去迁就tmux应该是没啥问题的

我把tmux前缀改为C-s, 感觉非常方便, 已经形成肌肉记忆, 而emacs的搜索也是C-s, 非常常用, 也已经形成肌肉记忆了.