一 .vim自带的补全功能
Ctrl+X Ctrl+O全能补全(OmniComplete)
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 拼写建议
补全窗口相关快捷键:
ctrl+P 向上切换成员,也可以直接打开当前文件关键字补全的列表
ctrl+N 向下切换成员,也可以直接打开当前文件关键字补全的列表
ctrl+E 关闭下拉窗口
ctrl+Y 关闭下拉窗口,并使用当前选项
二 .插件OmniComplete :为 C/C++ 自动补全
OmniCppComplete 就是专为 C/C++ 编写的 OmniComplete 一个补全脚本
参考 OmniComplete
三 .代码模板:snipMate插件
snip可以设置代码模板的自动输入,如:输入inc,按tab键,可以自动展开为#include<>,并把光标停在见括号中;
snipmate的安装:使用Vundle安装,需要增加一行配置` Bundle 'snipMate'
,参考使用Vundle管理插件
snipMate的目录snipMate/snippets下已经自定义了一些模板,
如:c.vim中定义了for
snippet for
for (${2:i} = 0; $2 < ${1:count}; $2${3:++}) {
${4:/* code */}
}
其中, 1:count、 2分别表示第一个输入位置和第二个输入位置,代码模板展开后,tab键可以在这几个位置切换, 1:count中的count,表示 1这个位置默认是count;定义模板很简单,可以参考snipMate/snippets下的模板定义。
三 .SuperTab
vim的自动补全快捷键,需要的按键较多,安装插件SuperTab,可以使用tab键触发补全,补全列表中可以使用tab键选择。
SuperTab键和snipMate冲突的问题,可以通过如下配置解决, 参考:
let SuperTabMappingForward="<Tab>"
两个配置项:
g:SuperTabRetainCompletionType的值缺省为1,意为记住你上次的补全方式,直到使用其它的补全命令改变它;如果把它设成2,意味着记住上次的补全方式,直到按ESC退出插入模式为止;如果设为0,意味着不记录上次的补全方式;
g:SuperTabDefaultCompletionType的值设置缺省的补全方式,缺省为CTRL-P,可以设置为:
let g:SuperTabDefaultCompletionType = "<C-X><C-O>"
三 . neocomplete
neocomplete 的github