vim 메시지 표시 시간을 제어하는 ​​방법

vim 메시지 표시 시간을 제어하는 ​​방법

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값이 작 으면 echocmd 줄 메시지가 너무 빨리 지워집니다. 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+에서만 사용할 수 있는 것 같습니다 .

관련 정보