metrologia - Funcionalidad tipo cola para gvim
vim online (3)
Quiero usar gvim para ver un archivo de registro que se actualiza continuamente, de modo que siempre veo la última línea actualizada, como el comando tail en unix. ¿Es posible?
Abra el archivo de registro y
:setlocal autoread
Hay un complemento ( Tail Bundle ) en el sitio vim .
Me gusta corto y sin muchos hackers o scripts externos. Puede ejecutar este oneliner desde ex (whithin vim) cuando sea necesario (o poner cada comando en vimrc, para cuando se abren los archivos de registro).
:set autoread | au CursorHold * checktime | call feedkeys("lh")
y adicionalmente puede :set syntax=logtalk
para colorear el registro
(Si desea saltar (casi) al final del archivo, simplemente use "G" en lugar de "lh" con las teclas de alimentación)
Explicación:
-
autoread
: lee el archivo cuando se modifica desde el exterior (pero no funciona por sí solo, no hay un temporizador interno o algo así. Solo leerá el archivo cuando vim realiza una acción, como un comando en ej:!
-
CursorHold * checktime
: cuando el usuario no mueve el cursor durante el tiempo especificado enupdatetime
(que es de 4000 milisegundos de forma predeterminada) se ejecuta el tiempo de verificación, que verifica los cambios fuera del archivo -
call feedkeys("lh")
: el cursor se mueve una vez, a la derecha y atrás a la izquierda. y luego no pasa nada (... lo que significa queCursorHold
se activa, lo que significa que tenemos un bucle )
Para detener el desplazamiento cuando use call feedkeys("G")
, ejecute :set noautoread
- ahora vim le dirá que el archivo se cambió y pregunte si desea leer los cambios o no)
* de esta answer (refiriéndose a una respuesta de PhanHaiQuang y un comentario de flukus )
O una solución menos elegante en un vim 7.x sería simplemente hacer: e! siempre que necesites la actualización.