Cómo controlar el tiempo de visualización del mensaje vim

Cómo controlar el tiempo de visualización del mensaje vim

¿Hay alguna manera de controlar el tiempo de visualización de los mensajes en vim?

Por ejemplo, al buscar en vim y llegar al final, se mostrará:

  search hit BOTTOM, continuing at TOP

Incluso si después de varios segundos el cursor ya se ha alejado, el mensaje seguirá sin desaparecer.

La única forma de desaparecer esos mensajes que se me ocurre es hacer

:redraw

Sin embargo, espero encontrar una manera de hacerlo manualmente para todos esos mensajes después de un período de tiempo, digamos 2 segundos.

Respuesta1

Vim no proporciona una forma útil de establecer retrasos precisos sin interferir con la interacción del usuario. Lo mejor que probablemente puedas esperar es esto:

:autocmd CursorHold * :echo

Elegí :echoporque es menos perturbador visualmente :redrawy debería borrar los mensajes del área de comando.

Tenga en cuenta que esto sólo funcionará cuando esté en modo normal ynopresione una tecla durante un período de tiempo (generalmente cuatro segundos). Para saber por qué, consulte:

:help CursorHold
:help 'updatetime'

En otras palabras, esto no va a resultar muy eficaz. Se ha debatido sobre la creación de un verdadero bucle de eventos en Vim al que se pueda conectar, pero a menos que eso suceda, lo que desea no estará disponible.

Respuesta2

Si el updatetimevalor es pequeño, echose borrará el mensaje de la línea cmd demasiado rápido. Podemos usar la timer_start()función [^1] parademorala ejecución del eco. Esto es lo que funciona bien para mí:

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

El valor 25000se mide en milisegundos, por lo que significa aproximadamente 25 segundos después de mantener el cursor. Puede modificar este valor según sus necesidades.

[^1]: parece que timer_start()solo está disponible para Vim 8.0+.

información relacionada