
vim에서 메시지 표시 시간을 제어하는 방법이 있습니까?
예를 들어, vim에서 검색하고 맨 아래를 치면 다음과 같이 표시됩니다.
search hit BOTTOM, continuing at TOP
몇 초가 지난 후 커서가 이미 다른 곳으로 이동하더라도 메시지는 여전히 사라지지 않습니다.
내가 생각해 낼 수 있는 그러한 메시지를 사라지게 하는 유일한 방법은 다음과 같습니다.
:redraw
그러나 일정 시간(예: 2초)이 지난 후 이러한 모든 메시지에 대해 수동으로 수행할 수 있는 방법을 찾고 싶습니다.
답변1
Vim은 사용자 상호 작용을 방해하지 않고 정확한 지연을 설정하는 유용한 방법을 제공하지 않습니다. 아마도 당신이 바랄 수 있는 최선의 것은 이것이다:
:autocmd CursorHold * :echo
:echo
시각적으로 덜 방해되고 :redraw
메시지의 명령 영역을 지워야 하기 때문에 선택했습니다 .
이 기능은 일반 모드에 있을 때만 작동하며하지 마라일정 시간(보통 4초) 동안 키를 누릅니다. 그 이유는 다음을 참조하세요.
:help CursorHold
:help 'updatetime'
즉, 이것은 그다지 효과적이지 않을 것입니다. Vim에서 연결할 수 있는 진정한 이벤트 루프를 만드는 방법에 대한 논의가 있었지만, 그런 일이 발생하지 않는 한 원하는 것을 사용할 수 없습니다.
답변2
updatetime
값이 작 으면 echo
cmd 줄 메시지가 너무 빨리 지워집니다. timer_start()
[^1] 함수를 사용하여 다음을 수행할 수 있습니다 .지연에코 실행. 나에게 잘 맞는 것은 다음과 같습니다.
function! s:empty_message(timer)
if mode() ==# 'n'
echon ''
endif
endfunction
augroup cmd_msg_cls
autocmd!
autocmd CursorHold * call timer_start(25000, funcref('s:empty_message'))
augroup END
값은 25000
밀리초 단위로 측정되므로 커서를 누른 후 대략 25초를 의미합니다. 이 값을 자신에게 맞게 조정할 수 있습니다.
timer_start()
[^1]: Vim 8.0+에서만 사용할 수 있는 것 같습니다 .