web-dev-qa-db-ja.com

バッファ/ウィンドウフォーカスでVimを自動的に更新する方法は?

私はよく Vimで画面を再描画するためにControl + L を使用します。

特に、スリープ状態から抜けたり、モニター構成を変更したりすると、Vimを再描画する必要があることがよくあります。フォーカスを再描画する何かをvimrcに追加する方が簡単かもしれないと思いました。

  • ウィンドウ/バッファーがフォーカスを取得したときにバッファーを再描画する.vimrcファイルに追加できるコマンドはありますか?

特に、優れたコマンドには、顕著な悪影響やその他の関連する副作用があってはなりません。

11
Jeromy Anglim

vimには、これにバインドできるイベントFocusGainedがあり、これをredraw!コマンドと組み合わせます(!により、ウィンドウが最初にクリアされます)。

:au FocusGained * :redraw!

ここでの構文は、「パターン:redraw!に一致するファイルのイベントFocusGainedを取得すると、コマンドを自動的に実行します(auはautocmdの略です)*」と読むことができます。

これを永続的にするには、~/.vimrcに追加します(vimrcでは先頭の:は必要ありません)。

イベントをテストするには、次のようなより「明白な」コマンドを使用できます。

:au FocusGained * :q!
12
cjh