730ef12fc9b50f0985933f1f8113ed2d
紧急更新!针对原文中老旧插件的替换

前言

这阵子由于 Syntastic 造成的卡顿很闹心,开始进行了优化 Vim 的道路,无意间翻到了这个韦易笑这个大佬的知乎文章。并参考它进行了优化,Vim 的体验有了质的飞跃,以下就是根据这个大佬的文章进行的优化操作。

安装说明

以下插件统一以 plugin "name" 的形式,写到 vimrc 中,之后使用 :PluginInstall 即可安装。

使用wOrp/ale 实现代码 Fix 和动态检查

首先,先吐槽下 Syntastic 是真的慢,之前采取的方案是先关掉,等要用的时候再手动查询,当时的文章在这里。现在使用了大佬的推荐之后,ale 快了 Syntastic 不止一个数量级。 亲测之前需要卡顿大约5秒的情况,现在只需要不到半秒。
除此之外,ale 同时还支持了自动代码格式的纠正,如 autopep8

配置方案如下:

"w0rp/ale
let g:ale_linters_explicit = 1
let g:ale_completion_delay = 500
let g:ale_echo_delay = 20
let g:ale_lint_delay = 500
let g:ale_echo_msg_format = '[%linter%] %code: %%s'
let g:ale_lint_on_text_changed = 'normal'
let g:ale_lint_on_insert_leave = 1
let g:airline#extensions#ale#enabled = 1

let 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 = ''

let g:ale_sign_eror = 'E'
let g:ale_sign_warning = 'W'

let g:ale_linters = {
\   'python': ['pylint'],
\   'latex': ['lacheck'],
\   'swift': ['swiftlint'],
\   'vim':  ['vint'],
\   'markdown': ['markdownlint']
\}

let g:ale_fixers = {
\   '*': ['remove_trailing_lines','trim_whitespace' ],
\   'python': ['autopep8']
\}
"let g:ale_fix_on_save = 1 "auto Sava
"Use :ALEFix to fix
let g:ale_list_window_size = 5

注:需要自行安装vintpylintmarkdownlint 以及 autopep8!

vim-signify 改善 vim 的 git 体验

根据大佬的建议,替换了之前一直使用 gitgutter ,这个插件的对文本更改后生成相应标记的速度明显快于之前的插件。同时自带的 :SignifyDiff 可以直接水平分割查看 git diff,很舒适。

文本对象优化

众所周知vip/w选中段落/单词,cip/w改变段落/单词,dip/w删除段落/单词。除了这些我们还是有许多需要快速选中的情况的,这里就是对这些进行优化的。
大佬使用的插件如下:

Plug 'kana/vim-textobj-user'
Plug 'kana/vim-textobj-indent'
Plug 'kana/vim-textobj-syntax'
Plug 'kana/vim-textobj-function', { 'for':['c', 'cpp', 'vim', 'java'] }
Plug 'sgur/vim-textobj-parameter'

安装之后对应的操作如下:

  • i,a, :参数对象,写代码一半在修改,现在可以用 di, 或 ci, 一次性删除/改写当前参数
  • iiai :缩进对象,同一个缩进层次的代码,可以用 vii/dii/cii 选中/删除/改写
  • ifaf :函数对象,可以用 vif / dif / cif 来选中/删除/改写函数的内容
top Created with Sketch.