Ansi彩色文件编辑

4

背景

有一些从终端交互中获得的转录文件,使用传统的Unix命令 "script" 获取。

这些转录包含大量控制字符(如编辑Shell命令时的退格符)和许多颜色代码序列,作为运行各种命令的结果。偶尔还会运行像 "emacs -nw" 或 "aptitude" 这样的全屏终端(ncurses-based)应用程序。

在程序运行时,TERM环境变量被设置为 "xterm"。

需求 1:读取(基本解决)

我需要再次阅读这些文件,并有时复制粘贴一些小部分。

问题是:虽然偶尔出现的一些颜色变化不太成问题,但它们的实际密度使输出几乎无法阅读。更糟糕的是,编辑后的命令行(带有光标跳转和编辑单词)完全无法阅读。

"好" 的解决方案

通过例如 "less -r" 浏览文件。在相同的终端设置下向前翻页可以重现各种颜色和字符风格。

但许多其他功能更或多或少地出现故障,例如向后搜索会产生混乱的终端输出,通常需要按下 "Ctrl-L" 来清理。

需求 2:编辑

我喜欢的编辑器是emacs。有些人在emacs中运行shell时遇到了类似的情况,例如 Something wrong with Emacs shell

这里不是同样的情况。区别的例子如下:这里我们不必运行一个实际的shell,但我们需要像在通常的编辑中一样自由移动光标。

在这里进行编辑意味着轻松地在编辑器中打开这样一个转录文件,然后:

  • 在整个编辑过程中,始终看到终端代码传递的字符更改(颜色、属性)
  • (可选)一些相邻的字符在终端网格上,但在文件中由一些控制字符分隔的字符将具有有关此的视觉提示
  • 能够插入一些文本,
  • 删除部分,
  • 使用所有编辑器功能,如搜索/替换等,
  • 复制和粘贴到和从文件(包括到外部程序,它们只会收到纯文本)中,
  • 在我最疯狂的梦想中,一种"展平"操作,例如选择带有经过大量编辑的命令行序列,并将其替换为一系列简单字符,就像它是一次性输入的那样。上述提到的"视觉提示"将消失。

我尝试了http://www.emacswiki.org/emacs/AnsiColor和http://www.emacswiki.org/emacs/TtyFormat,但是没有得到满意的结果。 - Stéphane Gourichon
请问您能否提供一个示例文件的链接? - Thomas
1
当然。实际文件包含私人商业数据,因此我制作了一个示例,可在http://gourichon.org/2013/ansi-coloured-file-editing/file_with_ansi_colors.txt上使用。它显示:带有系统信息的彩色bash提示符,彩色ls,emacs -nw,aptitude以及编辑命令行的示例。针对最后一种情况的解决方法是,我有一个PROMPT_COMMAND,在运行之前重复命令行(参见带有“1285”的行)。问候。 - Stéphane Gourichon
1
我发现“less -R”比“less -r”更好用。 - Zaq
1
显然,通常的文本屏幕录制工具(如ttyrec、shelr、IPBT等)都没有这个功能,但无论如何它们都需要带有时间戳的输入,而script输出通常没有这个。IPBT可能是最接近编辑器的起点。 - sendmoreinfo
1个回答

1

在迷你缓冲区中键入Alt-:以评估某些内容。评估(ansi-color-apply-on-region (point-min) (point-max)),它将把ANSI颜色代码转换为字体颜色。


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