習慣頻繁地保存源碼,但是每次保存都有明顯的卡頓,於是用Vim自己的調優功能跟蹤了一下。

依次執行以下命令:

1
2
3
:profile start profile.log
:profile file *
:profile func *

然後執行保存操作,再執行以下命令:

1
2
:profile pause
:noautocmd qall!

在當前目錄下生成的文件profile.log里,看到執行時間最長的是Syntastic的函數,禁用這個擴展後保存果然比原來快多了。

但是Syntastic是個很有用的擴展,所以Google一下有沒有異步執行的方法,偶然發現了ALE,主要特性就是異步執行。試用之後覺得很好用,就把前者卸了。

ALE的初始配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
" ALE
let g:ale_sign_column_always = 1
let g:ale_set_highlights = 0
let g:airline#extensions#ale#enabled = 1
"自定義error和warning圖標
let g:ale_sign_error = '✗'
let g:ale_sign_warning = '⚠'
" 顯示Linter名稱,出錯或警告等相關信息
let g:ale_echo_msg_error_str = 'E'
let g:ale_echo_msg_warning_str = 'W'
let g:ale_echo_msg_format = '[%linter%] %s [%severity%]'
" PHP
let g:ale_php_phpcs_standard = 'PSR2'
let g:ale_php_phpmd_ruleset = '~/.phpmd.xml'
" 普通模式下,sp前往上一個錯誤或警告,sn前往下一個錯誤或警告
nmap sp <Plug>(ale_previous_wrap)
nmap sn <Plug>(ale_next_wrap)
" 觸發/關閉語法檢查
nmap <Leader>at :ALEToggle<CR>
" 查看錯誤或警告的詳細信息
nmap <Leader>ad :ALEDetail<CR>