Hail2u

Vimのdiffモードを自動的に終了させる

Vimでdiffsplitなどで差分を見た後、片方のバッファーを閉じるとdiffモードのままなので、手動でdiffoffしないといけない。僕はdiffモードやQuickfixの時しかウィンドウ分割を使わないみたいな感じのライトなVimユーザーなので、片方閉じたら自動的にdiffモードを終了させたい。そういう設定は特になさそうなので、自動コマンドでやってやった。

augroup DiffAutocommands
  autocmd!

  " Turn off diff mode automatically
  autocmd WinEnter * if (winnr('$') == 1) && (getbufvar(winbufnr(0), '&diff')) == 1 | diffoff | endif
augroup END

バッファーを閉じて他のウィンドウへ移動した時、ウィンドウの数(winnr('$'))が1で、diffモード(&diff)だった場合にdiffoffを呼んでやるようにした。手元の環境ではうまく動いてる。