概要
- vimで挿入モードを抜けて、一定時間操作が行われなかった場合に、バッファを保存する
- バッファを保存したタイミングでLinter(ALE)を動作させる
前提
- dense-analysis/aleによるコードの静的解析の設定が済んでる
デモ
挿入モードを抜けて1秒後にrubocop
が走り、自動修正可能な箇所については自動修正が行われる
コード(抜粋)
" 1秒間操作が無かった場合に自動保存set updatetime=1000
autocmd CursorHold * call AutoSave()" 保存可能なバッファである場合、明示的に`:w`を実行してバッファを保存function AutoSave()if&modified && !&readonly && bufname('%')!=# ''&& &buftype ==# ''&& expand("%")!=# ''call feedkeys(":w\<CR>","in")endifendfunction" バッファ保存をトリガにALEの自動修正を走らせる(quickfixは開かない)letg:ale_fix_on_save=1letg:ale_open_list=0" ALEによる自動修正の設定(rubyの場合)letg:ale_fixers={\'ruby':['rubocop']\}