【问题标题】:How to merge completion candidates for vim?如何合并vim的完成候选?
【发布时间】:2023-03-10 18:45:01
【问题描述】:

我经常依靠omni-completion 来编辑源代码,所以我当前的.vimrc 包含以下设置以快速访问目标候选人:

inoremap <C-f> <C-x><C-o>

现在我发现除了omni-completion 之外还有很多种ins-completions,并且我也对使用tagsfile names 完成感兴趣。

1. Whole lines                                          i_CTRL-X_CTRL-L
2. keywords in the current file                         i_CTRL-X_CTRL-N
3. keywords in 'dictionary'                             i_CTRL-X_CTRL-K
4. keywords in 'thesaurus', thesaurus-style             i_CTRL-X_CTRL-T
5. keywords in the current and included files           i_CTRL-X_CTRL-I
6. tags                                                 i_CTRL-X_CTRL-]
7. file names                                           i_CTRL-X_CTRL-F
8. definitions or macros                                i_CTRL-X_CTRL-D
9. Vim command-line                                     i_CTRL-X_CTRL-V
10. User defined completion                             i_CTRL-X_CTRL-U
11. omni completion                                     i_CTRL-X_CTRL-O
12. Spelling suggestions                                i_CTRL-X_s
13. keywords in 'complete'                              i_CTRL-N*emphasized text*

问题是,我如何使用单个命令 &lt;C-f&gt;ins-complete-menu 上列出来自这些特定完成源的所有候选人。

【问题讨论】:

    标签: vim autocomplete


    【解决方案1】:

    使用默认补全(CTRL-N / CTRL-P);它的完成源可以通过'complete' 选项进行配置。不幸的是,从您的列表中,只有标签(不是文件名)可以(并且默认情况下)包含在其中。 (但你事先不知道你想要文件完成吗?我特别喜欢许多不同的完成命令,因为它们缩小了结果列表,对我来说,这比不必考虑调用哪个完成更有价值。)

    如果您真的想要一个包罗万象的补全,您必须自己实现它作为用户补全,并且您必须重新实现所有内置源,因为目前没有办法以编程方式获取它们。

    【讨论】:

    • 是的,我认为'complete' 选项也是调整此类需求的正确方法。可悲的是,没有文件路径选项。我发现自己正在编辑~/.ctags 以某种方式将find 命令输出插入标记文件并更改iskeyword 等。好吧,太麻烦了,我应该摆脱我的imap 设置并按原样安顿下来。谢谢你的建议。
    【解决方案2】:

    您应该检查插件neocomplcache。它可以做到这一点,但设置可能不是微不足道的。

    【讨论】:

    • 感谢您的建议。但是该插件对我的任务来说太过分了。我知道它在各种情况下都非常有用,但我宁愿让我的.vimrc 保持简单。我的 dotfiles 由 git 版本控制以与每个主机共享,Vundle 需要git-submodule 来跟踪这些插件的更新。有些主机甚至没有连接到 Internet。不过还是谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-03
    • 1970-01-01
    • 2012-11-19
    • 1970-01-01
    • 2011-01-29
    • 1970-01-01
    相关资源
    最近更新 更多