Vim 中使用 OmniComplete 为 C/C++ 自动补全
来源:互联网 发布:windows配置域名 编辑:程序博客网 时间:2024/04/29 12:52
OmniComplete 并不是插件的名字,而是 Vim 众多补全方式中的一种(全能补全)。说白了 OmniComplete 其实就是根据光标前的内容猜测光标后的内容,具体怎么猜取决于所采用的脚本。
而 OmniCppComplete 就是专为 C/C++ 编写的 OmniComplete 一个补全脚本。
那么经常和 OmniCppComplete 一起出没的 Ctags 又是什么呢?Ctags 全名 Exuberant Ctags,是一个独立的程序(也就是说,其实和 Vim 一点关系都没有)。它可以为各种语言的源代码生成语言元素(language object)索引文件。对于 C/C++ 来说,就是把源代码中的各种宏、函数、类、类成员等等元素和它们的相关信息生成索引文件,供其它程序使用。
OmniCppComplete 脚本就是根据 Ctags 生成的索引文件进行补全的。好了,背景知识就是这样,安装步骤如下:
安装 Ctags
- 从官网下载 Ctags 可执行文件,网站是 http://ctags.sourceforge.net/
- 将下载到的文件(仅 EXE 文件即可)解压到一个目录,例如
D:/ctags
- 将该目录加入环境变量
PATH
准备索引文件
以生成 C++ 标准库索引文件为例:
- 下载专为 Ctags 修改过的 libstdc++ 头文件
- 将其解压到一个目录,例如
D:/ctags/cpp_src
使用命令行进入 D:/ctags/cpp_src 后执行:
ctags -R --sort=1 --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++ -f cpp .
建议将上一步生成的
D:/ctags/cpp_src/cpp
文件放到一个专门放置索引文件的目录以便后面的统一设置,例如放到D:/ctags/tags
其它库的索引文件也可以依法炮制,只需切换到该库的 include 文件夹,执行:
ctags -R --sort=yes --c++-kinds=+p --fields=+iaS --extra=+q --language-force=C++ -f <文件名> .
安装 OmniCppComplete
- 下载 OmniCppComplete
- 将下载到的文件解压到
~/.vim
(unix) 或者%HOMEPATH%\vimfiles
(Windows) 文件夹 在 vimrc 文件中加入
" ctags 索引文件 (根据已经生成的索引文件添加即可, 这里我额外添加了 hge 和 curl 的索引文件)set tags+=D:/ctags/tags/cppset tags+=D:/ctags/tags/hgeset tags+=D:/ctags/tags/curl" OmniCppCompletelet OmniCpp_NamespaceSearch = 1let OmniCpp_GlobalScopeSearch = 1let OmniCpp_ShowAccess = 1let OmniCpp_ShowPrototypeInAbbr = 1 " 显示函数参数列表let OmniCpp_MayCompleteDot = 1 " 输入 . 后自动补全let OmniCpp_MayCompleteArrow = 1 " 输入 -> 后自动补全let OmniCpp_MayCompleteScope = 1 " 输入 :: 后自动补全let OmniCpp_DefaultNamespaces = ["std", "_GLIBCXX_STD"]" 自动关闭补全窗口au CursorMovedI,InsertLeave * if pumvisible() == 0|silent! pclose|endifset completeopt=menuone,menu,longest
另外,还需确认在 vimrc 中开启了 filetype
选项,不然 OmniComplete 无法自动识别 C/C++ 文件类型进行补全。
这样,在插入模式编辑 C/C++ 源文件时按下 .
或 ->
或 ::
,或者手动按下 Ctrl+X Ctrl+O 后就会弹出自动补全窗口,此时可以用 Ctrl+N 和 Ctrl+P 上下移动光标进行选择。
美化咩?
也许你也已经注意到了一个问题,那就是「自动补全窗口的配色非常之丑」,Vim 自带的几个配色方案中只有两三种配色改掉了自动补全窗口丑陋的紫色,其它的基本上都是很逆天的用灰色表示当前选中项、紫色表示其他项。
要改变自动补全窗口的配色可以在 vimrc 中加上:
highlight Pmenu guibg=darkgrey guifg=blackhighlight PmenuSel guibg=lightgrey guifg=black
Pmenu
是所有项的配色,PmenuSel
是选中项的配色,guibg
和 guifg
分别对应背景色和前景色。
原文:http://timothyqiu.com/archives/using-omnicomplete-for-c-cplusplus-in-vim/
- Vim 中使用 OmniComplete 为 C/C++ 自动补全
- Vim 中使用 OmniComplete 为 C/C++ 自动补全
- Vim 中使用 OmniComplete 为 C/C++ 自动补全
- Vim 中使用 OmniComplete 为 C/C++ 自动补全
- Vim 中使用 OmniComplete 为 C/C++ 自动补全
- emacs下C/C++自动补全 之 使用Yasnippet模板补全 以自定义USACO模板为例
- Vim中C/C++代码补全插件-omnicppcomplete
- Vim中C/C++代码补全插件-omnicppcomplete
- Vim中C/C++代码补全插件-omnicppcomplete
- Vim 中实现括号自动补全
- vim 编辑器中 c++自动补全
- Vim中Python自动补全
- vim中php自动补全
- vim中自动补全的快捷键
- vi/vim使用进阶: 自动补全
- 使用Vim打造IDE--自动补全
- vi/vim使用进阶: 自动补全
- vim自动补全
- vc++ float to byte[]
- Java SE 规范官网下载
- jsonp客户端调用示例
- 一个IT男,一个建筑女内陆省会的薪资历程
- Java的String基础总结
- Vim 中使用 OmniComplete 为 C/C++ 自动补全
- _itoa atoi、atof、itoa、itow _itoa_s 类型转换使用说明
- ProguardGui进行jar包代码混淆(android library生成混淆jar包)
- statistics script for counting the result of more csv files
- 快递查询接口调用与解析
- VM安装CentOS6.5固定IP设置——桥接模式
- js 将json字符串转换为json兑现
- 没有数据库的rails项目,最简单的上传图片
- android自动化ANT编译