Цветовые коды ANSI в VIM

У меня есть скрипт, который генерирует файл журнала с цветовыми кодами ANSI в них так:

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

есть ли способ заставить Vim понять эти цветовые коды?

Спасибо за любую помощь.

4 ответов


используйте плагин Ansiesc Чарльза Кэмпбелла (Dr Chip):

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

перед:

before

:AnsiEsc<CR>

after


Я не уверен в vim, но если вы просто просматриваете файл журнала (т. е. вам не нужно редактировать), вы можете использовать меньше:

less -R

поскольку ссылка в принятом ответе, похоже, не работает, я нашел эту ссылку:https://github.com/vim-scripts/AnsiEsc.vim


AnsiEsc работает с основными цветовыми кодами ANSI, но не с другими кодами. Проблема в том, что есть много of ANSI_escape_code s beyond the basic 3[31m red 3[0m; что такое AnsiEsc, что такое любая программа, чтобы сделать с 3[... unrecognized ? Кажется, что AnsiEsc просто оставляет такие в покое, но по-разному в Vim и mvim.

лучше док на AnsiEsc будет приветствоваться; ссылки на небольшой синтаксический анализатор кода ANSI в python будут приветствоваться.

тестовый случай для цветного вывода из gnu ls и grep, с TERM xterm-256color и терминал macosx версии 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, 3[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

см. также прекрасный скрипт bash colors256 .