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()
강조 표시를 지우는 다른 autocmd(한 번 실행, 즉 자체 삭제)를 정의하고 함수에서 반환하면 됩니다. 적합한 이벤트는 입니다 WinLeave,CursorMoved,CursorMovedI,CursorHold,CursorHoldI
.
답변2
내장된 "cursorline" 및 "cursorcolumn" 옵션을 사용하는 것은 어떻습니까? 그런 다음 BufEnter 또는 WinEnter autocmd를 사용하여 수행 setlocal cursorline cursorcolumn
하고 CursorHold,WinLeave autocmd를 사용하여 수행 할 수 있습니다 setlocal nocursorline nocursorcolumn
.