[VIM] 常用插件

本文详细介绍了VIM中常用的插件,包括Vundle管理插件、Ctags建立标签索引、cscope查询调用关系、Taglist显示符号窗口、NERDTree展示目录、FileExplorer进行多文件操作、Winmanager窗口管理、ctrlp和leaderF文件搜索、Syntastic语法检查以及YouCompleteMe补全功能。通过这些插件,可以大幅提升VIM的开发效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

VIM 插件

一、Vundle 插件管理

配置

$ cd ~/.vim/bundle
$ git clone git@github.com:VundleVim/Vundle.vim.git
$ vim ~/.vimrc
" 插件管理
set nocompatible            " 关闭兼容模式
filetype off
set rtp+=~/.vim/bundle/Vundle.vim/
call vundle#begin()
"Bundle 'gmarik/vundle'
"Bundle 'taglist.vim'
"Bundle 'scrooloose/nerdtree'
"Bundle 'kien/ctrlp.vim'
"Bundle 'Yggdroot/LeaderF'
"Bundle 'fholgado/minibufexpl.vim'
"Bundle 'winmanager'
"Bundle 'Valloric/YouCompleteMe'
"Bundle 'scrooloose/syntastic'
call vundle#end()
filetype on

命令

:PluginInstall 安装在.vimrc文件中列出来的所有插件。
:PluginInstall <plugin-name> 安装指定的插件
:PluginClean 清理未用插件
:PluginUpdate
:PluginList
:PluginSearch

二、Ctags 建立标签索引

ctags详解

配置

$ sudo apt-get install ctags
$ vim ~/.vimrc
" Ctags 设置
set tags=./tags:,tags                   " ./tags: 向上找直到根

使用

$ ctags -R --c++-kinds=+px --fields=+iaSKz --extra=q

命令

:tag tag Find a tag.
Ctrl-] Find the tag under the cursor.
Ctrl-t Return to previous location before jump to tag

三、cscope 查询调用关系

cscope详解

配置

$ sudo apt-get install cscope
$ vim ~/.vimrc
" cscope 设置
set cscopequickfix=s-,c-,d-,i-,t-,e-    " quickfix窗口显示
if has("cscope")
   set csprg=/usr/bin/cscope
   set csto=1                           " tags优先查找,0则反之
   set cst                              " 同时使用tags
   set nocsverb
   if filereadable("cscope.out")
      cs add cscope.out
   endif
   set csverb
endif

使用

$ cscope -Rbq

命令

Ctrl-] & Ctrl-t
:cs find c/d/e/f/g/i/s/t

四、Taglist 基于ctags的symbol窗口

配置

$ vim ~/.vimrc
" Taglist 设置
let Tlist_Auto_Open=0                   " 默认关
let Tlist_Ctags_Cmd='/usr/bin/ctags'
let Tlist_Show_One_File=1               " 只显示当前文件的TagList
let Tlist_File_Fold_Auto_Close=0        " 不关闭其他文件tags
let Tlist_Enable_Fold_Column=0          " 不显示折叠树
let Tlist_Exit_OnlyWindow=1             " 如过是最后一个窗口,则退出
let Tlist_Sort_Type="name"              " 按照名称排序
" let Tlist_Close_On_Select=1             " 选中tag后自动关闭

命令

:TlistOpen 打开taglist窗口
:TlistClose 关闭taglist窗口
:TlistToggle 在打开和关闭间切换

五、NERDTree 树状目录

配置

$ vim ~/.vimrc
" NERDTree 设置
let NERDTreeWinPos='left'                " 左侧显示窗口
let NERDTreeShowHidden=1                 " 显示隐藏文件

命令

:NERDTree 打开
:NERDTreeClose 关闭
:NERDTreeToggle 在打开和关闭间切换

六、FileExplore 多文件操作

配置

" FileExplore 设置
let g:miniBufExplMapWindowNavVim = 1     " <C-h,j,k,l>切换到上下左右的窗口
let g:miniBufExplMapWindowNavArrows = 1  " <C-箭头键>切换到上下左右窗口
let g:miniBufExplMapCTabSwitchBufs = 1   " 支持Ctal-Tab键切换
let g:miniBufExplModSelTarget = 1
let g:miniBufExplMoreThanOne = 0

命令

:bn 下一个buf
:bp 上一个buf

七、Winmanager 窗口管理

配置

" Winmanager 设置
" let g:AutoOpenWinManager = 1           " 打开vim自动打开WM
let g:NERDTree_title="[NERDTree]"
let g:winManagerWindowLayout="NERDTree|TagList"
function! NERDTree_Start()
   exec 'q'                            " 打开WM会有空buf,退出
   exec 'NERDTree'
endfunction
function! NERDTree_IsValid()
   return 1
endfunction
" nmap <F8> :WMToggle<CR>
function! <SID>ToggleWindowsManager()
   if IsWinManagerVisible()
      call s:CloseWindowsManager()
   else
      call s:StartWindowsManager()
      exec 'q'                          " 打开WM会有空buf,退出
   end
endfunction

命令

:WManager 打开
:WMClose 关闭
:WMToggle 切换

八、ctrlp 文件搜索

命令

Ctrl-p

九、leaderF 文件搜索

十、Syntastic 语法检查

配置

" Syntastic 设置
" let g:syntastic_ignore_files=[".*\.py$"]  " 禁止对python检测以加快速度
let g:syntastic_check_on_open=1
let g:syntastic_enable_signs=1

十一、YouCompleteMe 补全

环境搭建

$ apt install libclang-dev cmake python-dev clang llvm

配置

" YouCompleteMe 设置
" let g:ycm_global_ycm_extra_conf='~/.vim/bundle/YouCompleteMe/third_party/ycmd/cpp/ycm/.ycm_extra_conf.py'
" set completeopt=longest,menu                              " 补全行为与IDE一致
" autocmd InsertLeave * if pumvisible() == 0|pclose|endif   " 离开插入模式关闭预览窗口
" let g:ycm_confirm_extra_conf=0                            " 打开vim不咨询是否加载ycm
" let g:ycm_collect_identifiers_from_tags_files=1           " YCM 基于ctags引擎
" let g:ycm_min_num_of_chars_for_completion=2               " 从第2个字符开始匹配
" let g:ycm_cache_omnifunc=0                                " 禁止缓存匹配项
" let g:ycm_seed_identifiers_with_syntax=1                  " 语法关键字补全
" let g:ycm_complete_in_comments=1                          " 注释也能补全
" let g:ycm_complete_in_strings=1                           " 字符串也能补全
" let g:ycm_key_invoke_completion='<C-Space>'               " 直接触发自动补全
" inoremao <expr> <CR> pumvisible() ? "\<C-y>" : "\<CR>"    " 回车选中当前项

十二、建立索引和调用关系

$ ctags -R --c++-kinds=+px --fields=+iaSKz --extra=q
$ cscope -Rbq
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值