许多CLI程序输出突出显示的文本。尽管其中大多数检查输出是否将发送到文件,但其中一些包含终端转义码。我喜欢带有转义码的输出,但是在Vim中查看这些文件很痛苦。

Vim可以将这些转义码解释为预期的颜色吗?如果不是,可以将Vim设置为忽略这些转义码吗?

#1 楼

有多种插件可让您通过转义码查看ANSI颜色:


AnsiEsc.vim – :AnsiEsc
Colorizer – :ColorToggle


如果要删除所有转义代码,可以使用:

:%s/<1b>\[[0-9;]*m//g


注意:<1b>不是文字,它是转义字符,请使用Ctrl + v后跟Esc插入它(它可能也显示为^[,具体取决于您的display设置)。

也可以使用sed将其删除;例如:

$ sed 's|\x1b\[[;0-9]*m||g' somefile | vi -


评论


您也可以在vim的正则表达式和vimscript字符串中使用\ e,而不用键入

–横行
20-2-7在18:31

#2 楼

如果您有一个具有+ terminal功能的足够现代的vim,则可以执行:term cat somefile,并且您将获得一个带有解释了所有终端代码的缓冲区。

在大型文件上,例如着色器,当我将它释放在6000行的文件中时,这会使我的vim变得异常缓慢。

评论


注意:默认情况下,终端缓冲区是不可修改的,任何修改都会使颜色消失。

– preferred_anon
20 Mar 5 '20 at 17:22

#3 楼

在上一个答案的基础上,使用此bash函数,您可以打开vim,并在以后的新窗口中以彩色而不是代码显示所需的文件(取决于$ 1的大小)。

ansivim ()                               
{                                        
    vim -c ":term ++hidden ++open cat "
}


例如

ansivim build.log


评论


欢迎来到Vi和Vim!

– D. Ben Knoble♦
20年1月28日在14:24

drkicknrush,有没有办法用stdin做到这一点?我不确定发生了什么,只能使它与实际文件一起使用。谢谢!

– marinara
20年8月14日在1:28

嗨@mar​​inara,那也是我想要的东西:-)但我无法使它正常工作,对不起...

– drkicknrush
20年8月20日在11:58