Comment faire en sorte que tail -f affiche une sortie colorée avec vim?

9

Dans cette question , Gilles a répondu

Encore une autre possibilité est de s'exécuter tail -fdans un tampon shell Emacs et d'utiliser les capacités de coloration syntaxique d'Emacs.

Parce que je suis un utilisateur de vim, j'aimerais le faire avec vim , pas avec emacs .
Est -ce que vim a cette fonctionnalité?

Benjamin
la source
2
Vim n'est qu'un éditeur de texte, contrairement à Emacs ... Il existe cependant un plugin de queue pour Vim qui peut être utile.
jasonwryan
Il y a aussi le plug-in vimpager qui pourrait faire l'affaire
bsd
1
faut-il que ce soit un éditeur de texte? Si vous avez juste besoin de colorer du texte, vous pouvez utiliser Clide
golimar
De plus, il existe TailBundle pour vim.
jofel
Il y a une question similaire ici . Les solutions expliquent l'utilisation du multitail et comment le configurer, cela peut peut-être être utile.
déconnexion le

Réponses:

2

Vous pouvez écrire un plugin multithread pour changer le (s) tampon (s) en temps réel en Python ou tout autre script que Vim prend en charge et possède des threads.

Mais cela ne fonctionne que dans le terminal pour autant que je sache. Au moins dans X11, la version GUI plantera si l'interface graphique est modifiée par un autre thread.

Si vous acceptez d'autres programmes, grc et ccze peuvent coloriser les flux.

lilydjwg
la source
0

Je l'aime court et sans beaucoup de piratage ou de scripts externes. Vous pouvez exécuter ce oneliner depuis ex (dans vim) en cas de besoin (ou mettre chaque commande dans vimrc, lorsque les fichiers journaux sont ouverts.)

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

et en plus, vous pouvez :set syntax=logtalkcolorer le journal

(si vous souhaitez sauter (presque) à la fin du fichier, utilisez simplement "G" au lieu de "lh" avec les touches de flux)

Explication:

  • autoread: lit le fichier lorsqu'il est modifié de l'extérieur (mais il ne fonctionne pas seul, il n'y a pas de temporisateur interne ou quelque chose comme ça. Il ne lira le fichier que lorsque vim fait une action, comme une commande dans ex :!
  • CursorHold * checktime: lorsque le curseur n'est pas déplacé par l'utilisateur pendant le temps spécifié dans updatetime(qui est de 4000 millisecondes par défaut) checktimeest exécuté, qui vérifie les modifications de l'extérieur du fichier
  • call feedkeys("lh"): le curseur est déplacé une fois, à droite et à gauche à gauche. et puis rien ne se passe (... ce qui signifie, qui CursorHoldest déclenché, ce qui signifie que nous avons une boucle )

Pour arrêter le défilement lors de l'utilisation call feedkeys("G"), exécutez :set noautoread- maintenant vim dira que le fichier a été modifié et demande si l'on veut lire les modifications ou non)

J'aime l'idée de regarder les fichiers journaux dans vim (au lieu de tail -f), par exemple lorsque vous travaillez dans une session ssh sans écran / tmux. De plus, vous pouvez copier directement à partir du fichier journal, si nécessaire, ou enregistrer la sortie directement ou ... tout ce que vous pouvez faire avec vim :)

* à partir de cette réponse (se référant à une réponse de PhanHaiQuang et à un commentaire de flukus )

eli
la source