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

5
有没有一款vim插件可以在多个文件中自动完成代码?
例如:
- 打开文件a.txt和b.txt; - 在使用vim编辑b.txt时,我想能够从a.txt和b.txt中获得自动完成的结果。
我已经使用了youCompleteMe插件,但它只能在一个文件中完成该语言的方法。请问有什么建议吗?

如果你需要C++的代码自动补全,YCM是一个不错的选择,但你需要配置它来满足你的需求。不过我不确定它是否支持普通的.txt文件... - ladislas
1个回答

12
Vim内置的完成功能通过插入模式下按Ctrl-N键已经支持此功能,不需要插件。您可以通过以下测试看到:
  1. Create a file very-basic-vimrc with the following contents:

    set nocompatible
    filetype plugin indent on
    syntax enable
    
  2. Run vim -u very-basic-vimrc. That launches Vim using that file as your vimrc, so you can test how Vim works without any plugins.

  3. In the empty buffer, type the text “one two three”.

  4. Run :new to open another buffer, and type “four five six”.

  5. Switch back to the first buffer with Ctrl-W W, then open a new line with o.

  6. Type “fi” and press Ctrl-N. This triggers the next autocomplete match – see Vim’s documentation for i_CTRL-N. “five” will successfully be completed, even though the word “five” is in a different buffer.

如果这个功能在你的正常vimrc中无法工作,那么你安装的插件(例如YouCompleteMe)可能会干扰到这个行为。更改该插件的设置或禁用它。
我个人使用Supertab。使用Supertab,我可以成功地使用Tab键从不同的缓冲区完成一个单词。其他流行的自动完成插件可能也支持这个特性。
我发现YouCompleteMe声称可以在不需要输入Tab的情况下提供自动完成。如果来自其他缓冲区的完成列表没有出现在自动触发的列表中,YouCompleteMe可能是有意这样做的,以便正常输入不会被减慢太多。您需要查看YCM文档中是否存在启用它的选项或映射,以将完成列表扩展到包括来自其他缓冲区的完成。如果两者都不存在,您可以创建一个问题请求,在YouCompleteMe的问题跟踪器上。

这是跨缓冲区而不是文件的... :/ - Chris Stryczynski

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接