Как автоматически обновить Vim при фокусировке буфера / окна?

11

Я часто использую Control + L, чтобы перерисовать экран в Vim .

В частности, когда я выхожу из спящего режима или меняю конфигурацию монитора, я часто нахожу, что Vim необходимо перерисовать. Я подумал, что может быть проще добавить что-то в мой vimrc, которое перерисовывает фокус.

  • Есть ли команда, которую я могу добавить в мой .vimrcфайл, который перерисовывает буфер, когда окно / буфер получает фокус?

В частности, хорошая команда не должна иметь заметных отрицательных результатов или других побочных эффектов.

Джером англим
источник

Ответы:

12

У vim есть событие, к которому вы можете привязать это, FocusGainedобъедините это с redraw!командой ( !сначала вызывает очистку окна)

:au FocusGained * :redraw!

Синтаксис здесь можно прочитать как «автоматически запускать команду (au - сокращение от autocmd), :redraw!когда я получаю событие FocusGainedдля любого файла, соответствующего шаблону *».

чтобы сделать этот перманент добавить его в свой ~/.vimrc(ведущий :не нужен в vimrc).

для тестирования событий вы можете использовать более «очевидную» команду, такую ​​как

:au FocusGained * :q!
cjh
источник
1
Спасибо. Я дал базовый тест, и он, казалось, работал без проблем с производительностью.
Джером Энглим