目录
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
:关闭窗口