Vim插件可在多个文件中自动完成

时间:2015-01-11 06:25:36

标签: vim autocomplete vim-plugin

是否有一个vim插件可以跨多个文件自动完成?

示例:

  • 打开文件为a.txtb.txt
  • 在使用vim修改b.txt时,我希望能够从a.txtb.txt
  • 接收自动完成结果

我已经使用了youCompleteMe插件,但只能在一个文件中完成该语言的方法。

有什么建议吗?

1 个答案:

答案 0 :(得分:8)

Vim的内置完成 Ctrl-N in Insert Mode 已支持此。不需要插件。

您可以通过以下测试看到:

  1. 使用以下内容创建文件very-basic-vimrc

    set nocompatible
    filetype plugin indent on
    syntax enable
    
  2. 运行vim -u very-basic-vimrc。这会使用该文件作为vimrc启动Vim,因此您可以测试Vim如何在没有任何插件的情况下工作。

  3. 在空缓冲区中,键入文本“一二三”。

  4. 运行:new打开另一个缓冲区,输入“四五六”。

  5. 使用 Ctrl - W W 切换回第一个缓冲区,然后使用o打开一个新行

  6. 输入“fi”并按 Ctrl - N 。这会触发下一次自动完成匹配 - 请参阅Vim’s documentation for i_CTRL-N。 “五”将成功完成,即使“五”字在不同的缓冲区中。

  7. 如果此功能对您的普通vimrc不起作用,则您安装的某个插件(如YouCompleteMe)可能会干扰该行为。更改该插件的设置或禁用它。

    我个人使用Supertab。使用Supertab,我可以成功输入 Tab 来完成不同缓冲区中的单词。其他流行的完成插件也可能支持该功能。

    我看到YouCompleteMe声称提供完成,甚至不需要输入 Tab 。如果来自其他缓冲区的完成没有显示在该自动触发的列表中,YouCompleteMe可能会故意这样做,以便正常输入不会减慢太多。您必须在YCM的文档中查找启用它的选项,或者扩展完成列表以包含来自其他缓冲区的完成的映射。如果这两个都不存在,您可以在YouCompleteMe’s issue tracker上创建请求该问题的问题。