Bagaimana cara me-refresh Vim secara otomatis pada fokus buffer / jendela?

11

Saya sering menggunakan Control + L untuk menggambar ulang layar di Vim .

Secara khusus, ketika saya keluar dari tidur atau mengubah konfigurasi monitor saya sering menemukan bahwa Vim perlu digambar ulang. Saya pikir mungkin lebih mudah untuk hanya menambahkan sesuatu ke vimrc saya yang menggambar ulang pada fokus.

  • Apakah ada perintah yang bisa saya tambahkan ke .vimrcfile saya yang menggambar ulang buffer ketika jendela / buffer mendapatkan fokus?

Secara khusus, perintah yang baik seharusnya tidak memiliki kinerja negatif yang nyata atau efek samping terkait lainnya.

Jeromy Anglim
sumber

Jawaban:

12

vim memiliki acara yang dapat Anda ikat untuk ini FocusGained,, gabungkan ini dengan redraw!perintah ( !menyebabkan jendela dibersihkan terlebih dahulu)

:au FocusGained * :redraw!

Sintaks di sini dapat dibaca sebagai 'secara otomatis menjalankan perintah (au adalah kependekan dari autocmd) :redraw!ketika saya mendapatkan acara FocusGaineduntuk file apa pun yang cocok dengan pola *'.

untuk menjadikan ini permanen, tambahkan ke ~/.vimrc(pemimpin Anda :tidak diperlukan di vimrc).

untuk menguji acara Anda dapat menggunakan perintah yang lebih 'jelas' seperti

:au FocusGained * :q!
cjh
sumber
1
Terima kasih. Saya memberikannya tes dasar, dan sepertinya berhasil tanpa masalah kinerja.
Jeromy Anglim