1. 語法檢查利器 ale
安裝 ale
Plug 'w0rp/ale'
配置
- 顯示狀態欄+不需要高亮行
let g:ale_sign_column_always = 1
let g:ale_set_highlights = 0
- 錯誤和警告標志
let g:ale_sign_error = 'x'
let g:ale_sign_warning = '!'
- 文件保存時,顯示警告
let g:ale_lint_on_text_changed = 'never'
let g:ale_lint_on_enter = 0
- 使用clang對c和c++進行語法檢查,對python使用pylint進行語法檢查
let g:ale_linters = {
\ 'c++': ['clang'],
\ 'c': ['clang'],
\ 'python': ['pylint'],
\}
使用clang分析的話,確保clang已經安裝, 如若沒有安裝,即可運行如下命令進行安裝
sudo apt-get install clang
- 效果圖
2. 補全代碼塊
- 安裝
Plug 'SirVer/ultisnips'
Plug 'honza/vim-snippets'
- 配置
let g:UltiSnipsExpandTrigger="<tab>"
let g:UltiSnipsJumpForwardTrigger="<c-h>"
let g:UltiSnipsJumpBackwardTrigger="<c-l>"
使用vim打開文件,輸入main
,然后敲 tab,會有如下效果
注:插件有默認的代碼塊模板,若是需要自定義,則去~/.vim/plugged/vim-snippets
路徑下修改。
3. symbol 管理器 taglist.vim
taglist.vim
插件依賴ctags,所有首先得安裝ctags。
安裝ctags:
$ sudo apt install -y exuberant-ctags
在.vimrc上配置:
set tags=./.tags;,.tags
安裝taglist.vim插件:
Plug 'vim-scripts/taglist.vim'
插件配置:
map <silent> <F10> :TlistToggle<cr>
效果圖:
normal
模式下按下<F10>
出現如下效果
自動更新symbol:
使用vim-gutentags
自動更新tags文件。
安裝vim-gutentags插件:
Plug 'ludovicchabant/vim-gutentags'
配置插件
" gutentags 搜索工程目錄的標志,碰到這些文件/目錄名就停止向上一級目錄遞歸
let g:gutentags_project_root = ['.root', '.svn', '.git', '.hg', '.project']
" 所生成的數據文件的名稱
let g:gutentags_ctags_tagfile = '.tags'
" 將自動生成的 tags 文件全部放入 ~/.cache/tags 目錄中,避免污染工程目錄
let s:vim_tags = expand('~/.cache/tags')
let g:gutentags_cache_dir = s:vim_tags
" 配置 ctags 的參數
let g:gutentags_ctags_extra_args = ['--fields=+niazS', '--extra=+q']
let g:gutentags_ctags_extra_args += ['--c++-kinds=+px']
let g:gutentags_ctags_extra_args += ['--c-kinds=+px']
" 檢測 ~/.cache/tags 不存在就新建
if !isdirectory(s:vim_tags)
silent! call mkdir(s:vim_tags, 'p')
endif
注:gutentags 需要靠上面定義的 project_root 里的標志,判斷文件所在的工程,如果一個文件沒有托管在 .git/.svn 中,gutentags 找不到工程目錄的話,就不會為該野文件生成 tags,這也很合理。想要避免的話,你可以在你的野文件目錄中放一個名字為 .root 的空白文件,主動告訴 gutentags 這里就是工程目錄。
更新symbol:
function! UpdateCtags()
TlistUpdate
endfunction
autocmd BufWritePost *.c,*.h,*.cpp call UpdateCtags()
保存文件時候,更新symbol。
4. 函數跳轉
函數跳轉也是用到了tags文件,symbol管理已經將相關環境安裝好了。
<c-]>
:跳轉到定義處。
<c-t>
:往回跳轉
<c-w>]
:新建一個窗口,並顯示定義。
<c-w>c
:關閉窗口