2012-05-15 11 views
28

Mam skrypt, który generuje plik dziennika z ANSI kodami kolorów w nich tak:ANSI Colour Codes w 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 

Czy istnieje jakiś sposób, aby uzyskać Vim zrozumieć te kody kolorów?

Dzięki za pomoc.

+0

Możliwe duplikaty witryny: http://superuser.com/questions/358409/how-can-i-tell-vim-to-show-ansi-escape-codes-properly –

Odpowiedz

30

Zastosowanie Charles Campbell (Dr Chip) AnsiEsc wtyczki:

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

Przed:

before

:AnsiEsc<CR>

after

+1

Musiałem zmienić odpowiednio "91m" i "93m" na "31m" i "33m", ale w przeciwnym razie zadziałało to pięknie. Dzięki. – Blake

+0

Zmień je gdzie? (plik vba jest dość włochaty ...) Ciągle otrzymuję sekwencje specjalne zamiast kolorów ... – fakeleft

+0

Nieważne. Kolory są stosowane, ale myślę, że muszę ponownie skompilować vim z funkcją "ukrywania", aby ukryć sekwencje specjalne. – fakeleft

33

nie jestem pewien o vim, ale jeśli jesteś po prostu przeglądania pliku dziennika (to znaczy, że nie trzeba być w stanie do edycji) można użyć mniej:

less -R 
+0

Dzięki za napiwek! – Blake

3

AnsiEsc prace z podstawowymi kodami kolorów ANSI, ale nie inne kody. Problem polega na tym, że jest wiele wiele zpoza podstawowym co to jest AnsiEsc, jaki jest program, który można zrobić z \033[... unrecognized? Wydaje się, że AnsiEsc po prostu pozostawia takie, ale inaczej w Vim i mvim.

Przydałby się lepszy doc na AnsiEsc; linki do małego analizatora kodu escape ANSI w Pythonie byłyby mile widziane.

Przypadek testowy dla kolorowego wyjścia z ls i grep gnu z TERM xterm-256color i MacOSX Terminal wersji 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 

Zobacz także piękny skryptu bash colors256.