web-dev-qa-db-fra.com

Garder la couleur de vim avec grep

J'aime la façon dont vim met en évidence la sortie de syslog. Cependant, je souhaite uniquement que les sorties les plus récentes soient ouvertes. j'ai essayé

grep --color=always "$@" /var/log/syslog  > /tmp/fileOUT
vim /tmp/fileOUT

mais il donne la sortie couleur bash comme [033; m bla bla. Si je ne fais pas include --color=always, il n'y a pas de couleur du tout. Comment puis-je faire ceci? (J'utilise bash)

4
MrUser

Bien, vimtilise des fichiers de modèles de couleurs pour la coloration syntaxique. Cela n'a rien à voir avec la sortie de grep qui utilise des séquences d'échappement ANSI (le fichier \[033; que vous avez mentionné).

Mon vim n'a pas de fichier de style pour syslog et ne le colore pas (j'ai vérifié à la fois sur Debian et sur Ubuntu 14.04). Si vous examinez le fichier correspondant sur votre système, vous constaterez qu'il commence par une expression régulière qui définit les fichiers à comparer. Donc, si vous faites correspondre votre /tmp/fileOUT à cette syntaxe, celle-ci doit être colorée. N'utilisez pas --color=always, cela risque de tout gâcher.

Vous pouvez également utiliser source-highlight. Installez-le avec Sudo apt-get install source-highlight puis exécutez:

Sudo tail -n 50 /var/log/syslog | source-highlight --out-format=esc -o STDOUT -s log

La commande ci-dessus colorera les 50 dernières lignes de /var/log/syslog:

enter image description here

3
terdon