2012-05-15 33 views
28

Tôi có một kịch bản mà tạo ra một tập tin đăng nhập với mã màu ANSI trong họ như vậy:Codes ANSI Màu trong 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 

Có cách nào để có được Vim để hiểu các mã màu sắc?

Cảm ơn bạn đã được trợ giúp.

+0

Trang web chéo có thể trùng lặp: http://superuser.com/questions/358409/how-can-i-tell-vim-to-show-ansi-escape-codes-properly –

Trả lời

30

Sử dụng Charles Campbell (Dr Chip) AnsiEsc plugin:

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

Trước:

before

:AnsiEsc<CR>

after

+1

Tôi đã phải thay đổi '91m' và' 93m' thành '31m' và' 33m', tương ứng, nhưng nó hoạt động tốt đẹp khác. Cảm ơn. – Blake

+0

Thay đổi chúng ở đâu? (tập tin vba là khá lông ...) Tôi vẫn nhận được một số chuỗi thoát thay vì màu sắc ... – fakeleft

+0

Nevermind. Các màu sắc được áp dụng, nhưng tôi nghĩ rằng tôi cần phải biên dịch lại vim với tính năng 'che giấu' để ẩn các chuỗi thoát. – fakeleft

33

Tôi không chắc chắn về vim, nhưng nếu bạn chỉ cần xem một tập tin log (tức là bạn không cần để có thể chỉnh sửa), bạn có thể sử dụng ít:

less -R 
+0

Cảm ơn bạn đã biết mẹo! – Blake

3

AnsiEsc làm việc với mã màu ANSI cơ bản, nhưng không các mã khác. Vấn đề là có trong số ANSI_escape_code s ngoài số \033[31m red \033[0m cơ bản; AnsiEsc là gì, chương trình nào là để làm với \033[... unrecognized? Có vẻ như AnsiEsc chỉ để lại một mình, nhưng khác với Vim và mvim.

Tài liệu tốt hơn trên AnsiEsc sẽ được chào đón; liên kết đến một trình phân tích cú pháp mã thoát ANSI nhỏ trong python sẽ được chào đón.

Một trường hợp thử nghiệm cho đầu ra màu từ gnu ls và grep, với TERM xterm-256color và macosx ga phiên bản 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 

Xem thêm kịch bản bash đáng yêu colors256.