2009-05-15 19 views
19

Quiero usar gvim para ver un archivo de registro que se actualiza continuamente, de modo que siempre vea la última línea actualizada, al igual que el comando tail en Unix. ¿Es posible?cola como funcionalidad para gvim

+0

posible duplicado de [Utilización VIM como un archivo de registro-espectador] (http://stackoverflow.com/questions/785389/using -vim-as-a-logfile-viewer) – feuGene

+0

Esto especifica gvim, el otro es vim. Esta solución no funciona para vim, entonces es una pregunta separada Y una respuesta separada. NO es un duplicado. – iconoclast

Respuesta

38

archivo de registro abierto y

:setlocal autoread 

hay un plugin (Tail Bundle) en el sitio vim.

+0

¿cómo uso el complemento Tail Bundle? Miré los documentos y ninguno de ellos parece hacer que el archivo se cargue continuamente. – ewok

2

O una solución menos elegante en un vim 7.x sería simplemente hacer: e! cada vez que necesites la actualización

+3

Perdón por marcar esta respuesta, pero esto es exactamente lo que Canopus intentaba NO hacer ... "actualizar continuamente, de modo que siempre veo la última línea actualizada" no se resuelve con ': e!' Cada vez que necesite la actualización . – pvandenberk

+0

reconocido, investigará las preguntas publicadas con más cuidado. – user28095

0

Me gusta poco y sin mucho hacking o scripts externos. Puede ejecutar este oneliner de ex (whithin vim) cuando sea necesario (o poner cada comando en vimrc, ya que cuando se abren archivos de registro.)

:set autoread | au CursorHold * checktime | call feedkeys("lh") 

y, además, se puede :set syntax=logtalk para colorear el registro

(si es que se quiere saltar (casi) al final del archivo, sólo tiene que utilizar "G" en lugar de "LH" con feedkeys)

Explicación:

  • autoread: lee el archivo cuando se lo cambia desde el exterior (pero no funciona por sí solo, no hay un temporizador interno o algo así). Sólo se va a leer el archivo cuando vim hace una acción, como una orden en la ex :!
  • CursorHold * checktime: cuando el cursor no se mueve por el usuario durante el tiempo especificado en updatetime (que es de 4000 milisegundos por defecto) checktime se 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 CursorHold se activa, lo que significa que tenemos un bucle )

Para detener el desplazamiento cuando se utiliza call feedkeys("G"), ejecutar :set noautoread - ahora Vim decir, que el archivo fue el cambio ans preguntan si uno quiere leer los cambios o no)

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

Cuestiones relacionadas