C++ 的 #include 子句的 Vim 自动完成

Posted

技术标签:

【中文标题】C++ 的 #include 子句的 Vim 自动完成【英文标题】:Vim auto-completion for C++'s #include clause 【发布时间】:2011-09-24 18:44:48 【问题描述】:

我刚安装了omnicomplete插件,是否支持header自动补全?

当我输入#include <时,是否可以提供要完成的头文件列表?

非常感谢!

【问题讨论】:

你有 c.vim (vim.org/scripts/script.php?script_id=213) 吗? 你安装了什么全功能插件? @ib , app-vim/omnicppcomplete-0.41 @yasouser ,该脚本对于该插件是强制性的吗? 如果你问 c.vim 对于omnicomplete.cim 是否是强制性的,那么没有。但是 c.vim 有很多你通常可以在 c/c++ IDE 中找到的特性。 【参考方案1】:

您可以只使用 vim7 中引入的 vim 自动完成功能

只需输入前几个字符并按Ctrl->P(for backward search)Ctrl->N(for forward search),vim 会列出所有可用选项或完成它。

是的,它甚至适用于头文件。

要完成这项工作,您应该安装 ctags 在usr/include 添加:

ctags -f ~/.vim/stdtags -R --c++-kinds=+p --fields=+iaS --extra=+q . 

将此添加到您的.vimrc

    set nocp
    filetype plugin on
    map <C-L> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR><CR>

    set tags=~/.vim/stdtags,tags,.tags,../tags

    autocmd InsertLeave * if pumvisible() == 0|pclose|endif

【讨论】:

你有那个插件吗?我在 Ubuntu 下有 Vim 7.3,没有特殊插件,当我输入 #include &lt;vecctrl+N 时,它不会自动完成到 vector 我认为 ^P ^N 只搜索文件中已经存在的字符串,我在 Gentoo 的 7.3.219 @warl0ck。实际上&lt;C-n&gt; 将搜索所有打开的缓冲区,然后搜索一些(例如包含文件)的关键字。您可以通过设置控制其范围。 @progo ,我想我理解 vim 是如何工作的这部分? @warl0ck,当然。它认为的所有内容都是关键字。但它不会将搜索限制在当前缓冲区(有&lt;C-x&gt;&lt;C-n&gt;)。

以上是关于C++ 的 #include 子句的 Vim 自动完成的主要内容,如果未能解决你的问题,请参考以下文章

vim配置

vim配置

强大的vim配置文件,让编程更随意(转)

从零开始配置vim(25)——关于 c++ python 的配置

从零开始配置vim(25)——关于 c++ python 的配置

从零开始配置vim(25)——关于 c++ python 的配置