Como ter tail -f mostrar saída colorida com vim?

9

Nesta pergunta , Gilles respondeu

Yet another possibility is to run tail -f in an Emacs shell buffer and use Emacs's syntax coloring abilities.

Como sou usuário do vim, gostaria de fazer isso com vim , não emacs .
O vim tem esse recurso?

    
por Benjamin 25.06.2012 / 03:46

2 respostas

2

Você pode escrever um plugin multithread para alterar o (s) buffer (s) em tempo real em Python ou qualquer outro script que o Vim suporte e tenha threads.

Mas isso só funciona no terminal, tanto quanto eu sei. Pelo menos no X11, a versão da GUI irá falhar se a GUI for modificada por outro thread.

Se você aceitar outros programas, grc e ccze são capazes de colorir fluxos.

    
por 13.09.2012 / 10:46
0

Eu gosto curto e sem muito hacking ou scripts externos. Você pode rodar este oneliner de ex (dentro do vim) quando necessário (ou colocar cada comando no vimrc, para quando os arquivos de log forem abertos).

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

e, além disso, você pode usar :set syntax=logtalk para colorir o log

(se você quiser pular (quase) para o final do arquivo, basta usar "G" em vez de "lh" com feedkeys)

Explicação:

  • autoread : lê o arquivo quando alterado do lado de fora (mas ele não funciona sozinho, não há temporizador interno ou algo parecido. Ele só lerá o arquivo quando o vim fizer uma ação, como um comando em ex :!
  • CursorHold * checktime : quando o cursor não é movido pelo usuário pelo tempo especificado em updatetime (que é 4000 milissegundos por padrão) checktime é executado, o que verifica se há alterações fora do arquivo
  • call feedkeys("lh") : o cursor é movido uma vez, para a direita e vice-versa. e então nada acontece (... o que significa que CursorHold é acionado, o que significa que temos um loop )

Para parar a rolagem ao usar call feedkeys("G") , execute :set noautoread - agora o vim dirá, que o arquivo foi alterado e perguntará se alguém deseja ler as alterações ou não)

Eu gosto da idéia de ver arquivos de log no vim (em vez de na cauda -f), por exemplo quando você está trabalhando em uma sessão ssh sem screen / tmux. Além disso, você pode copiar diretamente do arquivo de registro, se necessário, ou salvar a saída diretamente ou ... o que você pode fazer com o vim :)

* desta resposta (consulte uma resposta de PhanHaiQuang e um comentário de flukus )

    
por 18.01.2018 / 09:01