Wie aktualisiere ich Vim automatisch im Puffer- / Fensterfokus?

11

Ich benutze oft Strg + L, um den Bildschirm in Vim neu zu zeichnen .

Insbesondere wenn ich aus dem Schlaf komme oder die Monitorkonfiguration ändere, muss Vim häufig neu gezeichnet werden. Ich dachte, es könnte einfacher sein, meinem vimrc einfach etwas hinzuzufügen, das sich auf den Fokus neu zeichnet.

  • Gibt es einen Befehl, den ich meiner .vimrcDatei hinzufügen kann, der den Puffer neu zeichnet, wenn das Fenster / der Puffer den Fokus erhält?

Insbesondere sollte ein guter Befehl keine merkliche negative Leistung oder andere damit verbundene Nebenwirkungen haben.

Jeromy Anglim
quelle

Antworten:

12

vim hat ein Ereignis, an das Sie sich binden können. FocusGainedKombinieren Sie dies mit dem redraw!Befehl (dies !bewirkt, dass das Fenster zuerst gelöscht wird.)

:au FocusGained * :redraw!

Die Syntax hier kann wie folgt gelesen werden: "Führen Sie den Befehl automatisch aus (au steht für autocmd), :redraw!wenn ich das Ereignis FocusGainedfür eine Datei erhalte, die dem Muster entspricht *."

Um dies dauerhaft zu machen, fügen Sie es Ihrem hinzu ~/.vimrc(der führende :wird in vimrc nicht benötigt).

Um Ereignisse zu testen, können Sie einen 'offensichtlicheren' Befehl wie verwenden

:au FocusGained * :q!
cjh
quelle
1
Vielen Dank. Ich habe es einem grundlegenden Test unterzogen und es schien ohne Leistungsprobleme zu funktionieren.
Jeromy Anglim