vim配置c语言开发环境 vim简单配置教程( 四 )


代码检查是个好东西,让你在编辑文字的同时就帮你把潜在错误标注出来,不用等到编译或者运行了才发现 。我很奇怪 2018 年了,为啥网上还在到处介绍老旧的 syntastic,但凡见到介绍这个插件的文章基本都可以不看了 。老的 syntastic 基本没法用,不能实时检查,一保存文件就运行检查器并且等待半天,所以请用实时 linting 工具 ALE:
大概长这个样子,随着你不断的编辑新代码,有语法错误的地方会实时帮你标注出来,侧边会标注本行有错,光标移动过去的时候下面会显示错误原因,而具体错误的符号下面会有红色波浪线提醒 。Ale 支持多种语言的各种代码分析器,就 C/C++ 而言,就支持:gcc, clang, cppcheck 以及 clang-format 等,需要另行安装并放入 PATH下面,ALE能在你修改了文本后自动调用这些 linter 来分析最新代码,然后将各种 linter 的结果进行汇总并显示再界面上 。
同样,我们也需要简单配置一下:
let g:ale_linters_explicit = 1let g:ale_completion_delay = 500let g:ale_echo_delay = 20let g:ale_lint_delay = 500let g:ale_echo_msg_format = '[%linter%] %code: %%s'let g:ale_lint_on_text_changed = 'normal'let g:ale_lint_on_insert_leave = 1let g:airline#extensions#ale#enabled = 1let g:ale_c_gcc_options = '-Wall -O2 -std=c99'let g:ale_cpp_gcc_options = '-Wall -O2 -std=c++14'let g:ale_c_cppcheck_options = ''let g:ale_cpp_cppcheck_options = ''基本上就是定义了一下运行规则,信息显示格式以及几个 linter 的运行参数,其中 6,7 两行比较重要,它规定了如果 normal 模式下文字改变以及离开 insert 模式的时候运行 linter,这是相对保守的做法,如果没有的话,会导致 YouCompleteMe 的补全对话框频繁刷新 。
记得设置一下各个 linter 的参数,忽略一些你觉得没问题的规则,不然错误太多没法看 。默认错误和警告的风格都太难看了,你需要修改一下,比如我使用 GVim,就重新定义了警告和错误的样式,去除默认难看的红色背景,代码正文使用干净的波浪下划线表示:
let g:ale_sign_error = "ue009ue009"hi! clear SpellBadhi! clear SpellCaphi! clear SpellRarehi! SpellBad gui=undercurl guisp=redhi! SpellCap gui=undercurl guisp=bluehi! SpellRare gui=undercurl guisp=magenta不同项目之间如果评测标准不一样还可以具体单独制定 linter 的参数,具体见 ALE 帮助文档了 。我基本使用两个检查器:gcc 和 cppcheck,都可以在 ALE 中进行详细配置,前者主要检查有无语法错误,后者主要会给出一些编码建议,和对危险写法的警告 。
我之前用 syntastic 时就用了两天就彻底删除了,而开始用 ALE 后,一用上就停不下来,头两天我还一度觉得它就是个可有可无的点缀,但是第三天它帮我找出两个潜在的 bug 的时候,我开始觉得没白安装,比如:
即便你使用各类 C/C++ IDE,也只能给实时你标注一些编译错误或者警告,而使用 ALE + cppcheck/gcc,连上面类似的潜在错误都能帮你自动找出来,并且当你光标移动过去时在最下面命令行提示你错误原因 。
用上一段时间以后,让你写 C/C++ 有一种安心和舒适的感觉 。
修改比较
这是个小功能,在侧边栏显示一个修改状态,对比当前文本和 git/svn 仓库里的版本,在侧边栏显示修改情况,以前 Vim 做不到实时显示修改状态,如今推荐使用 vim-signify 来实时显示修改状态,它比 gitgutter 强,除了 git 外还支持 svn/mercurial/cvs 等十多种主流版本管理系统 。
没注意到它时,你可能觉得它不存在,当你有时真的看上两眼时,你会发现这个功能很贴心 。最新版 signify 还有一个命令`:SignifyDiff`,可以左右分屏对比提交前后记录,比你命令行 svn/git diff 半天直观多了 。并且对我这种同时工作在 subversion 和 git 环境下的情况契合的比较好 。


以上关于本文的内容,仅作参考!温馨提示:如遇健康、疾病相关的问题,请您及时就医或请专业人士给予相关指导!

「四川龙网」www.sichuanlong.com小编还为您精选了以下内容,希望对您有所帮助: