Saya mencoba untuk mendefinisikan fungsi yang akan membuatnya lebih mudah untuk melihat di mana kursor berada dengan meletakkan garis silang di sekitarnya selama 100 ms.
Inilah usaha saya:
function! Flash()
set cursorline cursorcolumn
sleep 100m
set nocursorline nocursorcolumn
endfunction
nnoremap <leader>fl :call Flash()
Tampaknya meskipun fungsi di atas memanggil tidur di awal daripada di antara dua panggilan "set".
Adakah sesuatu yang mendasar tentang "tidur" yang saya salah pahami?
Jawaban:
Masalahnya adalah bahwa Vim tidak menggambar ulang layar sampai setelah fungsi selesai. Saya tidak yakin apa logika Vim kapan harus menggambar ulang sebenarnya , tetapi dalam kasus seperti ini Anda sering harus menelepon
redraw
secara manual:Anda mungkin juga ingin menambahkan
<CR>
ke pemetaan kunci:sumber