¿Cómo hacer que tail -f muestre salida coloreada con vim?

9

En esta pregunta , Gilles respondió

Otra posibilidad es ejecutar tail -fen un búfer de shell de Emacs y usar las habilidades de coloración de sintaxis de Emacs.

Como soy un usuario de vim, me gustaría hacer esto con vim , no con emacs .
¿ Vim tiene esta característica?

Benjamín
fuente
2
Vim es solo un editor de texto, a diferencia de Emacs ... Sin embargo, hay un complemento de cola para Vim que puede ser útil.
jasonwryan
También está el complemento vimpager que podría funcionar
bsd
1
¿Tiene que ser un editor de texto? Si solo necesita colorear el texto, puede usar Clide
golimar
Además, hay TailBundle para vim.
jofel
Hay una pregunta similar aquí . Las soluciones explican el uso de multitail y cómo configurarlo, tal vez pueda ser útil.
cierre de sesión el

Respuestas:

2

Puede escribir un complemento de subprocesos múltiples para cambiar los búferes en tiempo real en Python o cualquier otro script que Vim admita y tenga subprocesos.

Pero esto solo funciona en la terminal hasta donde yo sé. Al menos en X11, la versión de la GUI se bloqueará si la GUI es modificada por otro hilo.

Si acepta otros programas, grc y ccze pueden colorear las transmisiones.

lilydjwg
fuente
0

Me gusta breve y sin muchos hackers o scripts externos. Puede ejecutar este oneliner desde ex (dentro de 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 puedes :set syntax=logtalkcolorear 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 cambia desde el exterior (pero no funciona solo, no hay temporizador interno o algo así. Solo leerá el archivo cuando vim realice una acción, como un comando en ex :!
  • CursorHold * checktime: cuando el cursor no es movido por el usuario durante el tiempo especificado updatetime(que es 4000 milisegundos por defecto) checktimese ejecuta, que verifica los cambios desde fuera del archivo
  • call feedkeys("lh"): el cursor se mueve una vez, hacia la derecha y hacia la izquierda. y luego no pasa nada (... lo que significa que CursorHoldse dispara, lo que significa que tenemos un bucle )

Para detener el desplazamiento al usar call feedkeys("G"), ejecute :set noautoread: ahora vim le dirá que el archivo fue cambiado y le preguntará si desea leer los cambios o no)

Me gusta la idea de ver archivos de registro en vim (en lugar de tail -f), por ejemplo, cuando está trabajando en una sesión ssh sin pantalla / tmux. Además, puede copiar directamente desde el archivo de registro, si es necesario, o guardar la salida directamente o ... lo que sea que pueda hacer con vim :)

* de esta respuesta (refiriéndose a una respuesta de PhanHaiQuang y un comentario de flukus )

eli
fuente