在运行中的vim实例之间共享完成


10

tmux大部分时间都在使用vim,而不是使用制表符和拆分。vim是否有能力在正在运行的实例之间共享完成(通过CtrlnCtrlp)?有没有一种方法可以在每个vims服务器与服务器进行通信的地方进行设置vim


8
不,这不可能以实际的方式完成。Vim完全有能力处理数十个缓冲区,并利用其功能。
romainl '16

1
@romainl,我们能否从其中vim读取并刷新其完成列表的内容写入“完成文件” ?
J. Chomel

Answers:


2

如果数据库在每个vim实例外部,则Vim可以使用相同的完成数据库。

例如,如果您使用ctags完成或youcompleteme使用外部进程或文件的任何其他插件,则完成将在某种程度上“共享” 。

单词补全对您不是很有用,因为它将仅使用同一文件中的单词:C-N/C-P

但是omnictags完成将使用ctags数据库(应exuberant ctags事先构建),并将在所有实例之间共享。

键入C-X C-O用于完成全部操作,C-X C-]用于完成ctags。


0

:help i_ctrl-n它表明Vim使用complete选项来完成的话。上面的帮助complete继续显示,使用非Vim实例本地内容的唯一实际选择是使用字典文件。然后问题归结为使用所有vim实例生成这样的字典文件。您可以通过不时解析所有打开的文件来做到这一点。我不知道这会对性能产生影响。

另一种选择是使用完全不同的机制(ctags等),但这可能会破坏其他功能,因为这些并不是真正用于简单自动完成的。

总的来说,您还可以对工作流程进行一些更改,以更加遵循Vim的使用方式。这将意味着使用一个或几个窗口同时查看内容并经常切换缓冲区。ctrlP是一个很好地完成切换功能的插件。通过按下按钮将其激活后,它可以使您在不同位置模糊搜索文件,从而可以快速切换。只要您记住文件名即是。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.