1、自动补全new-omni-completion、OmniCppComplete

new-omni-completion是vim自带的全能补全工具,他要依据ctags生成的tags文件。

按下"Ctrl+X Ctrl+O"会进行自动补全;

默认会有预览窗口,通过在~/.vimrc文件中加入set completeopt=longest,menu

可以关掉智能补全时的预览窗口。

 

vim自动补全——OmniCppComplete

vim的自动补全功能可通过其插件OmniCppComplete实现。
安装OmniCppComplete
mn@mn-HP:~$ vim-addons install omnicppcomplete
配置OmniCppComplete
在vim配置文件/home/user/.vimrc中加入如下的配置:

vim javascript 自动补全 vim自动补全插件_vim

vim javascript 自动补全 vim自动补全插件_自动补全_02

View Code

1     "-- omnicppcomplete setting --
 2     " 按下F3自动补全代码,注意该映射语句后不能有其他字符,包括tab;否则按下F3会自动补全一些乱码
 3     imap <F3> <C-X><C-O>
 4     " 按下F2根据头文件内关键字补全
 5     imap <F2> <C-X><C-I>
 6     set completeopt=menu,menuone " 关掉智能补全时的预览窗口
 7     let OmniCpp_MayCompleteDot = 1 " autocomplete with .
 8     let OmniCpp_MayCompleteArrow = 1 " autocomplete with ->
 9     let OmniCpp_MayCompleteScope = 1 " autocomplete with ::
10     let OmniCpp_SelectFirstItem = 2 " select first item (but don't insert)
11     let OmniCpp_NamespaceSearch = 2 " search namespaces in this and included files
12     let OmniCpp_ShowPrototypeInAbbr = 1 " show function prototype in popup window
13     let OmniCpp_GlobalScopeSearch=1 " enable the global scope search
14     let OmniCpp_DisplayMode=1 " Class scope completion mode: always show all members
15     "let OmniCpp_DefaultNamespaces=["std"]
16     let OmniCpp_ShowScopeInAbbr=1 " show scope in abbreviation and remove the last column
17     let OmniCpp_ShowAccess=1

(前几行就是提供了C++中的./->/::等操作符的提示和自动完成)。

OmniCppComplete是基于ctags数据库即tags文件实现的(基于ctags生成的索引信息来实现自动补全的),所以在 ctags -R生成tags时还需要一些额外的选项,这样生成的tags文件才能与OmniCppComplete配合运作。

使用下列命令生成tags文件,就可以 与OmniCppComplete配合运作:
ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .
--c++-kinds=+p  : 为C++文件增加函数原型的标签
--fields=+iaS   : 在标签文件中加入继承信息(i)、类成员的访问控制信息(a)、以及函数的指纹(S)
--extra=+q 

 

# vim自动补全功能的测试
# 为了测试自动补全功能,我们先下载C++一份C++标准库的源代码。
mn@mn-HP:~$ sudo apt-get install build-essential
# 然后在/usr/include/c++下就可以找到标准库的头文件了。
mn@mn-HP:~$ cd /usr/include/c++
mn@mn-HP:/usr/include/c++$ ls
4.6  4.6.3
# 在此文件夹下生成能与OmniCppComplete配合运作的tags文件
mn@mn-HP:/usr/include/c++$ ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .
mn@mn-HP:/usr/include/c++$ ls
4.6  4.6.3  tags
# 在vim的配置文件中如下内容,然后在编程的时候就可以使用自动补全功能了。
mn@mn-HP:/usr/include/c++$ vi ~/.vimrc

  1. set tags+=/usr/include/c++/tags

# 用vi打开前面的Test.c文件,在printf("Hello World!\n")下一行中,输入pri,然后按下Ctrl+X Ctrl+O,此时vi会弹出一个窗口,所有以pri开头的tag都会出现在这个窗口中,printf就出现在第6行中

mn@mn-HP:~$ cd ~

mn@mn-HP:~$ vim Test.c

注意:在自动补全的点,Vim必须知道可能补全的定义。比如说,在namespace std命名空间下的变量和函数,必须要用using namespace std;暴露出来,否则是不能补全的。在.cpp文件中还可以,在.h文件中这样就不是好的做法了。暂时不知道这个问题是由于我自己配置错误还是程序没有 实现。

当自动补全下拉窗口弹出后,一些可用的快捷键:
Ctrl+P  向前切换成员
Ctrl+N  向后切换成员
Ctrl+E  表示退出下拉窗口, 并退回到原来录入的文字
Ctrl+Y

其他补全方式:
Ctrl+X Ctrl+L 整行补全
Ctrl+X Ctrl+N  根据当前文件里关键字补全
Ctrl+X Ctrl+K  根据字典补全
Ctrl+X Ctrl+T  根据同义词字典补全
Ctrl+X Ctrl+I  根据头文件内关键字补全
Ctrl+X Ctrl+]  根据标签补全
Ctrl+X Ctrl+F  补全文件名
Ctrl+X Ctrl+D  补全宏定义
Ctrl+X Ctrl+V  补全vim命令
Ctrl+X Ctrl+U  用户自定义补全方式
Ctrl+X Ctrl+S

帮助文档
:help omnicppcomplete

 

2、加速你的补全 -- 插件: SuperTab

下载地址

http://www.vim.org/scripts/script.php?script_id=1643

版本

1.6

安装

下载supertab.vba,用vim打开($ vim supertab.vba),然后Source the file (:so %)

  此时,supertab.vim 已放入 ~/.vim/plugin 文件夹、supertab.txt已放入~/.vim/doc中了。

手册

supertab.txt

在你的~/.vimrc文件中加上这两句:

" 0 - 不记录上次的补全方式
" 1 - 记住上次的补全方式,直到用其他的补全命令改变它
" 2 - 记住上次的补全方式,直到按ESC退出插入模式为止

let g:SuperTabRetainCompletionType=2      

 

" 设置按下<Tab>后默认的补全方式, 默认是<C-P>,
" 现在改为<C-X><C-O>. 关于<C-P>的补全方式,
" 还有其他的补全方式, 你可以看看下面的一些帮助:
" :help ins-completion
" :help compl-omni                
let g:SuperTabDefaultCompletionType="<C-X><C-O>"

 

3、提示函数原型echofunc
echofunc可以在命令行中提示当前输入函数的原型。
echofunc下载地址:http://www.vim.org/scripts/script.php?script_id=1735下载完成后,把echofunc.vim文件放到 ~/.vim/plugin文件夹中
当 你在vim插入(insert)模式下紧接着函数名后输入一个"("的时候, 这个函数的声明就会自动显示在命令行中。如果这个函数有多个声明, 则可以通过按键"Alt+-"和"Alt+="向前和向后翻页, 这个两个键可以通过设置g:EchoFuncKeyNext和g:EchoFuncKeyPrev参数来修改。这个插件需要tags文件的支持, 并且在创建tags文件的时候要加选项"--fields=+lS"(OmniCppComplete创建的tag文件也能用), 整个创建tags文件的命令如下:
$ ctags -R --fields=+lS
其他插件说明详见echofunc.vim

如果你在编译vim时加上了"+balloon_eval"特性,那么当你把鼠标放在函数名上的时候会有一个tip窗口弹出, 该窗口中也会有函数的声明。

 

下载地址

http://www.vim.org/scripts/script.php?script_id=1643

版本

0.43

安装

把supertab.vim 文件丢到 ~/.vim/plugin 文件夹就好了

手册

supertab.vim 文件头部, 和命令 ":SuperTabHelp"

4、markdown语法高亮vim-markdown

下载markdown-1.2.2.vba.gz,用vim打开,运行命令

:source %

 此时所有文件将会解压到~/.vim的相应文件,此时安装成功。