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