是否有一个vim插件可以跨多个文件自动完成?
示例:
a.txt
和b.txt
。 vim
修改b.txt
时,我希望能够从a.txt
和b.txt
我已经使用了youCompleteMe
插件,但只能在一个文件中完成该语言的方法。
有什么建议吗?
答案 0 :(得分:8)
Vim的内置完成 Ctrl-N in Insert Mode 已支持此。不需要插件。
您可以通过以下测试看到:
使用以下内容创建文件very-basic-vimrc
:
set nocompatible
filetype plugin indent on
syntax enable
运行vim -u very-basic-vimrc
。这会使用该文件作为vimrc
启动Vim,因此您可以测试Vim如何在没有任何插件的情况下工作。
在空缓冲区中,键入文本“一二三”。
运行:new
打开另一个缓冲区,输入“四五六”。
使用 Ctrl - W W 切换回第一个缓冲区,然后使用o
打开一个新行
输入“fi”并按 Ctrl - N 。这会触发下一次自动完成匹配 - 请参阅Vim’s documentation for i_CTRL-N
。 “五”将成功完成,即使“五”字在不同的缓冲区中。
如果此功能对您的普通vimrc不起作用,则您安装的某个插件(如YouCompleteMe)可能会干扰该行为。更改该插件的设置或禁用它。
我个人使用Supertab。使用Supertab,我可以成功输入 Tab 来完成不同缓冲区中的单词。其他流行的完成插件也可能支持该功能。
我看到YouCompleteMe声称提供完成,甚至不需要输入 Tab 。如果来自其他缓冲区的完成没有显示在该自动触发的列表中,YouCompleteMe可能会故意这样做,以便正常输入不会减慢太多。您必须在YCM的文档中查找启用它的选项,或者扩展完成列表以包含来自其他缓冲区的完成的映射。如果这两个都不存在,您可以在YouCompleteMe’s issue tracker上创建请求该问题的问题。