문제

I use echo -e to color my scripts output, it works fine when using standard output.

But when I redirect the output to a file, vim doesn't show the colors, instead of that it shows signs like this ^[[

example:

echo -e "\e[32m Green message\e[0m";
echo -e "\e[31m Red message\e[0m";

with vim :

^[[32m Green message^[[0m
^[[31m Red message^[[0m

How to fix this.

NB: cat shows the colors too!!

도움이 되었습니까?

해결책

Use either the AnsiEsc Plugin by Dr. Chip or my Colorizer plugin. Both should be able to color those Terminal Escape sequences.

다른 팁

It is usually a bad idea to add any ANSI escape characters to your output if that output is meant to be processed by another program.

Because it is a text editor, it is reasonable to expect Vim to display the content of the file as it is, with the escape characters, rather than as you want it to look.

So no, there's nothing to fix, here. On Vim's side, anyway.

Redirecting to a file creates that file with all the characters in the input -- including the color escapes. This is actually correct behaviour, and vim is showing you the right thing when it shows these special characters to you.

It seems that perhaps what you're looking for is syntax highlighting. Vim comes with the ability to understand and colorize many different types of text.

Try making sure you have the filetype option correctly set for whatever type of script you're using. Once you get it, you can get vim to set it automatically with the au command. Check out :help filetype for more info.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top