vim でバッファを変更した後にカーソルを強調表示する

vim でバッファを変更した後にカーソルを強調表示する

vim を使用しているときに、特に多くの分割を開いている場合、別のバッファに入った後にカーソルをすばやく見つけるのが困難です。

私は、バッファに入ったときに autocmd によって呼び出される関数を記述することでこれを修正しました。この関数は、カーソルの周囲のいくつかの文字を一致および不一致にし、その間に を使用しますsleep

しかし、これは、すばやく頻繁に切り替える場合や、たとえばヘルプタグを開く場合などに煩わしくなります。これは、関数が呼び出されるためです。バッファに入るが前にヘルプ タグにジャンプするため、遅れて表示されます。

vim の速度を大幅に低下させずに目標を達成するにはどうすればよいでしょうか?

編集: ハイライト機能でヘルプ ファイル タイプをチェックすることで、ヘルプ タグ部分を回避しました。ただし、これはまだ最適ではありません。

これが私の機能です:

function! HlCursor()
    let l:pat = '\v.{0,3}%#.{0,3}'
    " Let it blink for 250ms
    let l:match = matchadd('Todo', l:pat)
    redraw | sleep 250 m
    call matchdelete(l:match)
    redraw
endfunction

答え1

ブロッキング スリープの代替案としては、後続のイベントでのみ強調表示を削除するという方法があります。そのためには、 の後にmatchadd()、強調表示をクリアする別の (1 回だけ実行される、つまり、それ自体を削除する) autocmd を定義し、関数から戻ります。適切なイベントは ですWinLeave,CursorMoved,CursorMovedI,CursorHold,CursorHoldI

答え2

組み込みの「cursorline」および「cursorcolumn」オプションを使用するのはどうでしょうか。その場合、BufEnter または WinEnter の自動コマンドsetlocal cursorline cursorcolumnと CursorHold、WinLeave の自動コマンドの2 つの自動コマンドを使用できますsetlocal nocursorline nocursorcolumn

関連情報