web-dev-qa-db-fra.com

Codes couleur ANSI en VIM

J'ai un script qui génère un fichier journal avec des codes de couleur ANSI comme ceci:

[2012-05-14 18:00:02] ^[[0mINF: -- Starting update script --^[[0m
[2012-05-14 18:00:29] ^[[91mERR: Improper date, entry being ignored.^[[0m

Existe-t-il un moyen de faire comprendre à Vim ces codes de couleur?

Merci pour toute aide.

42
Blake

Utilisez le plugin AnsiEsc de Charles Campbell (Dr Chip):

http://www.vim.org/scripts/script.php?script_id=302

Avant:

before

:AnsiEsc<CR>

after

40
guns

Je ne suis pas sûr de vim, mais si vous visualisez simplement un fichier journal (c'est-à-dire que vous n'avez pas besoin de pouvoir le modifier), vous pouvez utiliser moins:

less -R
53
John Carter

Étant donné que le lien dans la réponse acceptée ne semble pas fonctionner, j'ai trouvé ce lien: https://github.com/vim-scripts/AnsiEsc.vim

6
ndjensen

AnsiEsc fonctionne avec les codes de couleur ANSI de base, mais pas avec les autres codes. Le problème est qu'il y a beaucoup de ANSI_escape_code s au-delà de la base \033[31m red \033[0m; qu'est-ce que AnsiEsc, qu'est-ce qu'un programme, à voir avec \033[... unrecognized? Il semble que AnsiEsc laisse simplement tel, mais différemment dans Vim et mvim.

Un meilleur doc sur AnsiEsc serait le bienvenu; des liens vers un petit analyseur de code d'échappement ANSI en python serait le bienvenu.

Un cas de test pour la sortie colorée de gnu ls et grep, avec TERM xterm-256color et macosx Terminal version 2.3:

#!/bin/bash
# test https://en.wikipedia.org/wiki/ANSI_escape_code#Colors from gnu ls and grep

mkdir bluedir  2> /dev/null
ls -d --color=always  bluedir  > ls.out

echo red-hot | grep --color=always  red  > grep.out

od -c ls.out
# 0000000  033   [   0   m 033   [   3   4   m   b   l   u   e   d   i   r
# 0000020  033   [   0   m  \n                                            
# Vim 7.3 :AnsiEsc "bluedir" blue, \033[0m as is
# mvim 8.0 :AnsiEsc "bluedir" works

od -c grep.out
# 0000000  033   [   0   1   ;   3   1   m 033   [   K   r   e   d 033   [
# 0000020    m 033   [   K   -   h   o   t  \n                            
# both Vim and mvim display as is

Voir aussi le joli script bash colours256 .

5
denis