基于Ctags NeoComplete的vim代码提示

1. 先来看看效果图

2. 配置方法

<1>.效果图

下面的效果如如果没有特殊说明,均是不需要按代码提示的快捷键(例如ctrl+p等)的,看看效果,是不是很想visual assist。

1.1 结构struct和枚举enum代码提示:

1.2 用户定义函数代码提示

1.3 用户定义变量代码提示

1.4 c++ class method代码提示:

1.5 class属性代码提示

1.6 c library代码提示

<2>.配置方法

2.1 安装ctags并生成tag文件

安装ctags

xuqiang@ubuntu:~/Documents/vim/test$ sudo apt-get install ctags

为linux下的c头文件生成tag文件,如果想要为其他的库生成tag文件,原理同下:

xuqiang@ubuntu:~/Documents/vim/test$ sudo ctags -f c --recurse --verbose 其中-f制定tag文件的名字,--recurse表明递归生成当前目录下的所有文件和文件夹。--verbose表明在控制台中打印当前生成进度信息。最好将生成的tag文件保存到一个特定的目录中,这里我是存放在了.vim下: xuqiang@ubuntu:~/.vim$ ls after c-support exUtility-4.2.0 plugin  tags  autoload doc ftplugin README.csupport

2.2 下载插件

下载插件(红色为本节配置使用到的插件),并存放在~/.vim/plugin/下。

|-- c.vim |--  neocomplcache.vim  |-- snippet.vim |-- supertab.vim |-- taglist.vim

2.3 .vimrc配置文件

" prérequis tags

set nocp filetype plugin on " configure tags - add additional tags here or comment out not-used ones " load user definition tags " set tags+=~/.vim/tags/stl set tags+=~/.vim/tags/c " linux header file tag " set tags+=~/.vim/tags/linuxkernel " set tags+=~/.vim/tags/sdl " set tags+=~/.vim/tags/qt4 " build tags of your own project with CTRL+F12 map <C-F11> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<CR> noremap <F11> :!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<cr> inoremap <F11> <Esc>:!ctags -R --c++-kinds=+p --fields=+iaS --extra=+q .<cr> " OmniCppComplete " let OmniCpp_NamespaceSearch = 1 " let OmniCpp_GlobalScopeSearch = 1 " let OmniCpp_ShowAccess = 1 " let OmniCpp_MayCompleteDot = 1 " let OmniCpp_MayCompleteArrow = 1 " let OmniCpp_MayCompleteScope = 1 " let OmniCpp_DefaultNamespaces = ["std", "_GLIBCXX_STD"] " automatically open and close the popup menu / preview window au CursorMovedI,InsertLeave * if pumvisible() == 0|silent! pclose|endif set completeopt=menuone,menu,longest,preview let g:SuperTabRetainCompletionType = 2 let g:SuperTabDefaultCompletionType = "<C-X><C-O>" let g:AutoComplPop_MappingDriven = 0 let g:acp_enableAtStartup = 1 let g:acp_ignorecaseOption = 1 let g:acp_completeOption = '.,w,b,k' " """""""""""""""""""""""""""""configuration for neocomplcache"""""""""""""""""""""""""""" " Disable AutoComplPop. let g:acp_enableAtStartup = 0 " Use neocomplcache. let g:neocomplcache_enable_at_startup = 1 " Use smartcase. let g:neocomplcache_enable_smart_case = 1 " Use camel case completion. let g:neocomplcache_enable_camel_case_completion = 1 " Use underbar completion. let g:neocomplcache_enable_underbar_completion = 1 " Set minimum syntax keyword length. let g:neocomplcache_min_syntax_length = 1 " set the max list in the popup menu. increase the speed let g:neocomplcache_max_list=20 " Define keyword. if !exists('g:neocomplcache_keyword_patterns')  let g:neocomplcache_keyword_patterns = {} endif  let g:neocomplcache_keyword_patterns['default'] = '\h\w*' let g:neocomplcache_auto_completion_start_length=1 " ignore letter case let g:neocomplcache_enable_ignore_case=1 " """""""""""""""""""""""""""""configuration for neocomplcache"""""""""""""""""""""""""""" " """"""""""""""""""""""""""auto complete () "" """""""""""""""""""""""""""""""""""""""" :inoremap ( ()<ESC>i :inoremap ) <c-r>=ClosePair(')')<CR> :inoremap { {}<ESC>i :inoremap } <c-r>=ClosePair('}')<CR> :inoremap [ []<ESC>i :inoremap ] <c-r>=ClosePair(']')<CR> :inoremap < <><ESC>i :inoremap > <c-r>=ClosePair('>')<CR> function ClosePair(char) if getline('.')[col('.') - 1] == a:char  return "\<Right>" else  return a:char endif endf " """"""""""""""""""""""""""auto complete () "" """""""""""""""""""""""""""""""""""""""" " """"""""""""""""""""""""""""line number"""""""""""""""""""""""""""""""""""""""""""""' set nu " """"""""""""""""""""""""""""line number""""""""""""""""""""""""""""""""""""""""""""" " """""""""""""""""""""""""""""auto indent """""""""""""""""""""""""""""""""""""""" set autoindent set cindent " """""""""""""""""""""""""""""auto indent """""""""""""""""""""""""""""""""""""""" " """""""""""""""""""""""""""""syntax on""""""""""""""""""""""""""""""""""""""""""""" syntax on " """""""""""""""""""""""""""""""syntax on """"""""""""""""""""""""""""""""""""""""""""

需要注意的是,默认的情况下vim是不会加载 set tags+=~/.vim/tags/c文件的,需要使用命令:NeoComplCacheCachingTags

暂时仅仅能够完成的一个文件的代码提示,下面几篇中还将介绍如何使用vim来管理项目文件,如何使用vim来debug c程序。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值