支持 Windows 平台 ANSI 代码渲染的文本编辑器/查看器。

47

我需要一些工具在Windows上正确显示包含ANSI代码的文本。不需要完全支持,但至少需要支持着色/加粗。

原因:我的记录器/调试模块使用ANSI代码生成漂亮的渲染输出,并使用重要部分进行颜色编码。这在串行终端上进行调试时非常有帮助,但如果我将调试转储到文件或将其复制粘贴到Windows上的文本编辑器中(交互式远程调试并不总是可行),最好的情况是所有ANSI代码都被剥离,最坏的情况是它们被呈现为垃圾字符,遮盖了真实数据。希望能够提供基本的编辑功能,以便能够挑选特定部分、注释等。

11个回答

14

11

这是一个非常好的想法。我从没想过从这个方向来处理。我会在周一研究一下。 - SF.
3
看起来PabloDraw正好满足我的需求。“多人游戏”功能是一个不错的额外奖励,可以进行合作转储分析。 - SF.
1
我敢打赌,当开发者们开发它时,他们甚至没有考虑过这种使用场景。 :-) - Andras Vass
@SF 你在使用哪个版本?它能正确解释tab吗?我的显示出小圆点而不是实际缩进的文本。 - Malabarba
@Bruce:在我的日志和调试中,我不使用制表符,所以这对我来说从未是一个问题。 - SF.

10

我一直在寻找一种解决方案来显示ANSI颜色(用于程序调试输出可读性),偶然间发现了Sublime Text(付费软件,带有试用版http://www.sublimetext.com/)和ANSIescape插件(https://github.com/aziz/SublimeANSI或通过package control安装)。

它支持着色,并且会识别粗体的转义字符但不会显示出来,尽管可以在设置文件中为其指定特殊颜色。值得注意的是,此插件以只读模式显示文本,如需编辑则需要关闭它。

这里是GitHub提供的屏幕截图,我个人已经尝试过并验证了其有效性:

enter image description here


我下载了Sublime Text,然后下载了插件的压缩包并将其复制到Sublime的插件文件夹中,并按照插件自述文件中的说明将其重命名为“ANSIescape”。但是在查看->语法下,我没有看到任何名为“ANSI”的语法。你能告诉我你是如何让它工作的吗?谢谢! - code_fodder

8
如果您主要想查看文件而不是编辑它,Ansifilter将把它转换为HTML,然后您可以在浏览器中查看并进行至少搜索,或者转换为RTF(如果wordpad足够好的话,难以想象)。哦,看起来下载页面上也有一个notepad++插件版本,如果允许您加载到notepad ++中,则可能非常完美。
http://www.andre-simon.de/doku/ansifilter/ansifilter.html

还有一个针对vim的不同插件,它根据ANSI代码对文本进行着色。
http://www.vim.org/scripts/script.php?script_id=302

但是,虽然它会用正确的颜色突出显示文本,但它会保留ANSI代码本身(以一种淡化的、接近背景的颜色),这可能会破坏文件中的任何对齐格式,并使其更难以移动文件(需要通过大量的“空白区域”才能定位光标,如果单词中间有ansi代码,则搜索不匹配等)。它可以利用一个补丁来隐藏代码,但这需要从源代码重新编译vim。

是的,如果您不是vim用户,建议vim并不是很有帮助,它有太大的学习曲线,我知道。但对于那些vim用户来说,它可能很有用。


2
仅做更新:你提到的 Vim 脚本所请求的“隐藏”补丁现在已经成为 Vim 7.3 版本的一部分。换句话说,Vim 现在能够显示带颜色的 Ansi 文本。 - UncleZeiv
Ansifilter非常有用;我写了一个包装器来抓取带颜色的文本,从ansifilter生成tex,编译并启动查看器,作为git中添加的自定义命令非常方便。 - kabZX
1
我知道这是一个非常旧的答案,但似乎 AnsiFilter 的 Notepad++ 插件不再存在。 - Fabio says Reinstate Monica
@FabiosaysReinstateMonica 嗯,我在找那个...没有找到 :(( - 你还找到其他什么了吗? - code_fodder
2
@code_fodder 我又仔细看了一下,找到了这个链接:https://sourceforge.net/p/npp-plugins/discussion/667712/thread/33551030/ 但我没有尝试过,而且我认为它是针对旧版 ANSI 版本的 N++(与 "AnsiFilter" 中的 "Ansi" 无关)。当前版本的 N++ 是 Unicode,插件不兼容,必须重新编译才能运行。而且那个 .zip 文件不包含源代码,所以我认为该项目已经死亡,我不会再深入研究了。抱歉! - Fabio says Reinstate Monica
显示剩余2条评论

4
我知道这并没有太大的帮助,但我在Linux上寻找完全相同的东西;只是想查看一些具有bash ANSI颜色代码的日志输出。不幸的是,这些ANSI颜色代码分布在几行之间,这意味着将文件“cat”并管道输送到“less -R”,“most”和类似工具中,仅会显示颜色起源的起始行,而不是应该被染色的后续行。
有趣的是,我认为像“nano”、“gedit”、“vim”等通常的Linux工具都具有文本文件中ANSI颜色代码的功能,但是关于这些编辑器中文本文件中ANSI颜色的信息非常有限。我只在测试编辑器“joe”中发现了有关ANSI颜色的信息:
便宜的ANSI颜色!-http://tldp.org/LDP/LG/issue01to08/articles.html#ansi 但是无法使建议起作用(也无法使“emacs”直接读取具有ANSI颜色字符的文本文件)。
好消息是,如果您需要在文本中使用ANSI颜色,则可以像上面建议的那样寻找ASCII艺术/ NFO实用程序 - 我最终找到的并为我工作的是tetradraw(通过www.linux.org/apps/AppId_42.html;可以sudo apt-get在Ubuntu中安装...实际上,tetradraw是绘图/编辑器部分的名称 - 但是还有一个单独的查看器,也可以使用ANSI颜色代码,tetraview)。
嗯,谁会想到,您需要追踪ASCII艺术实用程序,以便读取日志文件:)
无论如何,希望这可以在进一步搜索Windows ANSI颜色文本编辑器时提供一些帮助。干杯!

3

2
在Emacs中,只需在打开.nfo文件之前评估以下内容:
```(add-to-list 'auto-coding-alist '("\\.nfo\\'" . cp437-dos))```
这将使Emacs能够正确地识别和显示cp437-dos编码的.nfo文件。

1
我已经测试了多个程序,试图在Andras Vass提供的URL上显示颜色,但是没有任何结果(它们不显示颜色,或者它们将ANSI代码显示为一堆字符)。 经过搜索,我终于找到了 ANSIFilter(而不是Jeffson提到的NotePad ++插件),这是唯一适用于我的。我已将其添加到Windows上下文菜单中,因此现在我可以轻松地打开我的ANSI文本文件。

0

如果emacs不能做到这一点,我会感到惊讶。 至少可以使用嵌入式shell。 有:

更新:正如所指出的,它们只是术语输出着色器。但是如果您也可以在emacs中编辑shell缓冲区内容,例如:cat file&& 着色。

但等一下,我刚刚发现了这些:


1
这些似乎是 Emacs 中用于 shell 的颜色设置,而不是用于在 Emacs 中本地打开的随机文本文件的颜色设置。如果我在 Emacs 中打开 shell,然后在该 shell 中使用某个愚蠢的编辑器,再打开调试文件,则可以呈现代码。这种方式非常复杂。 - SF.

0

如果您的应用程序的调试日志通过1个类/函数进行处理,您可以尝试将输出拆分为以下两部分:

  • 在终端/控制台上显示类似ANSI的日志
  • 将类似HTML的日志写入文件

对于您的应用程序,所有日志都会发送到此类中,而此类会将输出拆分为终端/控制台和文件。

在您的日志记录类中创建一个“标准”,以指定颜色和加粗(例如,预定义代码如Ctrl-A表示红色,Ctrl-B表示加粗,...或在日志记录类中设置颜色和加粗的特定方法,甚至是ANSI代码),并在您的中央日志记录类中将其转换为:

  • 终端上的正确ANSI代码
  • 文件中的正确HTML代码

或者,我认为您也可以使用富文本代替HTML,但我不知道富文本的所有可能性,因此您可能需要查找相关信息。


请注意,从长远来看,如果您还想支持其他完全不同格式的日志输出(例如数据库等)或者根本没有格式化的可能性,那么您将从中受益。 - Patrick

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