首先Vim是内建代码补全功能的,在不需要通过任何设置的情况下就能使用。在您编辑代码的时候,键入 ctrl+x, ctrl+o, ctrl+n, ctrl+p 等快捷键,就会弹出智能提示的菜单。但是这仍然不满足大家的要求。大多数IDE中,只要代码输入到相应的位置,补全提示就会自动的弹出来,而vim的这种 补全还需要自己手动的来触发。
在coding过程中,有了变量或函数的自动弹出功能,可以极大的提高编码的效率和准确率,这里介绍的AutoComplPop和OmniCppComplete脚本插件就是实现这样一个功能。
1. 代码(普通变量函数)的自动弹出 AutoComplPop
下载:http://www.vim.org/scripts/script.php?script_id=1879
安装:
先解压:unzip vim-autocomplpop.zip
同其他脚本插件的安装方法一致,将解压后的文件拷贝到~/.vim/ 下的相应目录里:
autoload/*->~/.vim/autoload/
doc/*->~/.vim/doc/
plugin/*->~/.vim/plugin/
使用:
重新打开vim即可使用。添加help文件:helptags ~/.vim/doc/即可(打开帮助文件:h(elp) autocomplpop)
效果图:
2. c/c++代码(类的 . , ->, :: 操作符)的自动补全 OmniCppComplete
下载:http://www.vim.org/scripts/script.php?script_id=1520
安装:
先解压:unzip omnicppcomplete-0.41.zip
同其他脚本插件的安装方法一致,将解压后的文件拷贝到~/.vim/ 下的相应目录里:
autoload/*->~/.vim/autoload/
doc/*->~/.vim/doc/
after/*->~/.vim/after/
使用:
重新打开vim,添加help文件:helptags ~/.vim/doc/(打开帮助文件:h(elp) omnicppcomplete),但其功能的展现还需要一下操作和设置:
omnicppcomplete脚本插件的基本设置,在~/.vimrc中添加(我的喜好设置):
set completeopt=menu,menuone
let OmniCpp_MayCompleteDot=1 “ 打开 . 操作符
let OmniCpp_MayCompleteArrow=1 "打开 -> 操作符
let OmniCpp_MayCompleteScope=1 ”打开 :: 操作符
let OmniCpp_NamespaceSearch=1 “打开命名空间
let OmniCpp_GlobalScopeSearch=1
let OmniCpp_DefaultNamespace=["std"]
let OmniCpp_ShowPrototypeInAbbr=1 “打开显示函数原型
let OmniCpp_SelectFirstItem = 2”自动弹出时自动跳至第一个
要生成专用于c/c++的ctags文件,并引导vim找到改tags文件:
tags文件生成命令(通常位于代码项目的最上层目录下执行)[admin@local]$ ctags -R --c++-kinds=+p --fields=+iaS --extra=+q
引导omnicppcomplete找到tags文件:
(1)在vim中设置:set tags+=/home/project/project_1/tags 。该方法不方便,每次使用都要set一下
(2)在~/.vimrc中添加常用的路径tags:
set tags+=/home/project/project_1/tags
set tags+=/home/project/project_2/tags
这样,每次打开vim便会自动寻找以上设置的tags文件。另外,可以通过vim中:set tags来查看已设置的tags文件路径。
效果图: