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 <vec
和 ctrl+N
时,它不会自动完成到 vector
。
我认为 ^P ^N 只搜索文件中已经存在的字符串,我在 Gentoo 的 7.3.219
@warl0ck。实际上<C-n>
将搜索所有打开的缓冲区,然后搜索一些(例如包含文件)的关键字。您可以通过设置控制其范围。
@progo ,我想我理解 vim 是如何工作的这部分?
@warl0ck,当然。它认为的所有内容都是关键字。但它不会将搜索限制在当前缓冲区(有<C-x><C-n>
)。以上是关于C++ 的 #include 子句的 Vim 自动完成的主要内容,如果未能解决你的问题,请参考以下文章
从零开始配置vim(25)——关于 c++ python 的配置