2012-05-15 14 views
28

Tengo un script que genera un archivo de registro con códigos de color ANSI en ellos, así:códigos ANSI color en VIM

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

¿Hay alguna manera de obtener Vim para comprender estos códigos de color?

Gracias por cualquier ayuda.

+0

Posible duplicado entre sitios de: http://superuser.com/questions/358409/how-can-i-tell-vim-to-show-ansi-escape-codes-properly –

Respuesta

30

Uso Charles Campbell (Dr. Chip) AnsiEsc plugin:

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

Antes:

before

:AnsiEsc<CR>

after

+1

Tuve que cambiar '91m' y' 93m' a '31m' y' 33m', respectivamente, pero funcionó maravillosamente de lo contrario. Gracias. – Blake

+0

¿Cambiar dónde? (el archivo vba es bastante peludo ...) Todavía estoy obteniendo algunas secuencias de escape en lugar de colores ... – fakeleft

+0

No importa. Los colores se aplican, pero creo que necesito recompilar vim con la función 'ocultar' para ocultar las secuencias de escape. – fakeleft

33

no estoy seguro acerca de vim, pero si usted está viendo un archivo de registro (es decir, no es necesario ser capaz de editar) se podría usar menos:

less -R 
+0

¡Gracias por la sugerencia! – Blake

3

AnsiEsc trabajos con códigos de colores básicos ANSI, pero no otros códigos El problema es que hay lotes de ANSI_escape_code s más allá de \033[31m red \033[0m básico; ¿Qué es AnsiEsc, qué es cualquier programa, para hacer con \033[... unrecognized? Parece que AnsiEsc simplemente lo deja solo, pero de manera diferente en Vim y mvim.

Mejor documento en AnsiEsc sería bienvenido; serían bienvenidos los enlaces a un pequeño analizador de código de escape ANSI en python.

Un caso de prueba para la salida de color de GNU ls y grep, con TERM xterm-256color y MacOSX versión 2.3 Terminal:

#!/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 

Véase también la escritura del golpe preciosa colors256.

Cuestiones relacionadas