Vim文本着色

9

我使用echo -e为我的脚本输出添加颜色。在使用标准输出时,它可以正常工作。

但是当我将输出重定向到文件时,vim不会显示颜色。相反,它会显示像^[[这样的符号。

示例:

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

使用vim:

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

如何修复这个问题。

NB: cat 也会显示颜色!


2
请注意,cat 命令不会“显示颜色”,它只是将内容输出到终端(没有像 Vim 那样的解释)。终端会将转义序列转换为颜色! - Ingo Karkat
请使用 AnsiEsc,如果您的文本通常将直接通过终端(通常是通过 shell)输出,或者如果您打算仅在 vim 中查看它并进行着色,则可以使用 :syntax 和 :hi 命令来启用正则表达式高亮/着色文本,这样更容易管理它(除非当然,您正在处理 ANSI 艺术或类似的东西)。 - osirisgothra
3个回答

7

2
通常情况下,如果要处理输出的内容,最好不要添加任何 ANSI 转义字符。因为 Vim 是一个文本编辑器,我们可以合理地期望 Vim 显示文件内容时包括转义字符,而不是您想要的样子。所以,在这里没有什么需要修复的问题,至少在 Vim 的方面是这样的。

0

重定向到文件会创建该文件,并将输入中的所有字符(包括颜色转义)写入其中。这实际上是正确的行为,当vim向您显示这些特殊字符时,它正在向您展示正确的内容。

看起来你可能需要的是语法高亮。Vim具有理解和着色许多不同类型文本的能力。

尝试确保你已经正确设置了filetype选项,以适应你所使用的脚本类型。一旦你设置好了,你可以使用au命令让vim自动设置它。查看:help filetype获取更多信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接