这个能实现吗?
从概念上讲,一个解决方案应该适用于很多可能的配置,从在tmux窗口的不同面板中运行两个vim实例,到在不同地理区域的不同终端上运行,其中一个或两个通过网络连接(换句话说,vims由两个不同的shell进程托管,在tmux下它们本来就是如此)。
促使我考虑这个问题的情况是:
我有两个tmux面板都打开了vim,我想使用Vim复制/粘贴功能跨文件夹复制。
但只有当我把它们都运行在同一个Vim实例中时才有效,所以我只能被迫:
- 使用tmux的复制/粘贴功能将内容复制过去(这有点繁琐和棘手),或者
- 使用终端(PuTTY,iTerm2)的复制/粘贴功能将内容复制过去(这同样繁琐,但不受网络延迟的影响,但只对要复制的文本负载大小有限制,超出这个限制后,由于终端不知道文件中当前不可见部分的内容,这种方法将完全无法工作),或者
- 重新打开要编辑的文件,可能会丢失vim缓冲区历史记录/上下文和shell历史记录/上下文,在其中一个Vim实例中手动打开文件(对于大负载来说比1少费力点,但对小负载来说更费力)。
这有点烦人,如果我有预见性地切换到已经运行vim的适当终端以打开我的文件,那么所有这些都可以避免,但是工作流程和习惯的命运很少与方便相吻合。
所以问题是,是否存在一个命令或简单构建的(shell)脚本,允许我在独立运行的vim实例之间连接缓冲区?我很难从谷歌上得到足够的答案。
如果没有足够的答案(或者可以以合理的确定性确定 Vim 没有实现跨其实例传输缓冲区的功能),则可以采用上述第三种方法的良好实现(可绑定到键)。
同时,我将继续进一步自定义我的 vim 配置并强迫自己尽可能少地使用 vim 实例。
set autoread
,这回答了我提出的问题。 - Steven Lu