Vim 跨多个打开的缓冲区自动完成的插件

Vim plugin to auto complete across multiple open buffers

是否有 vim 跨多个文件自动完成的插件?

示例:

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

有什么建议吗?

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

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

  1. 创建文件very-basic-vimrc,内容如下:

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

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

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

  5. Ctrl-W切换回第一个缓冲区W, 然后用 o.

  6. 换行
  7. 键入“fi”并按Ctrl-N。这将触发下一个自动完成匹配——参见 Vim’s documentation for i_CTRL-N。 “五”将成功完成,即使“五”这个词在不同的缓冲区中。

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

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

我看到 YouCompleteMe 声称无需键入 Tab 即可完成。如果来自其他缓冲区的完成没有出现在那个自动触发的列表中,YouCompleteMe 可能是故意这样做的,这样正常的打字就不会减慢太多。您必须在 YCM 的文档中查找启用它的选项,或扩展完成列表以包括来自其他缓冲区的完成的映射。如果两者都不存在,您可以在 YouCompleteMe’s issue tracker.

上创建一个问题请求