语境
有一些来自终端交互的脚本文件,使用传统的 Unix 命令“脚本”获得。
这些脚本包含大量控制字符(如编辑 shell 命令时的退格),以及运行各种命令的结果的大量颜色代码序列。有时,甚至会运行诸如“emacs -nw”或“aptitude”之类的彩色全终端(基于 ncurses)的应用程序。
在程序运行时,TERM 环境变量被设置为“xterm”。
需要1:阅读(或多或少解决)
我需要再次阅读这些文件,有时还需要复制粘贴一些小部分。
问题是:虽然这里改变了一种颜色并没有太大问题,但它们的实际密度使输出几乎不可读。更糟糕的是,编辑过的命令行(带有光标跳转和编辑过的单词)完全不可读。
“好的”解决方案
使用例如“less -r”浏览文件。在同一终端设置中向前翻页可再现各种颜色和字符样式。
但是许多其他功能或多或少都被破坏了,例如向后搜索会产生混乱的终端输出,通常必须按“Ctrl-L”来清理。
需求2:编辑
我首选的编辑器是 emacs。有些人在 emacs 中运行 shell 时也遇到过类似的情况,例如,Emacs shell 有问题。
这里的情况不一样。差异示例:这里我们不必运行实际的 shell,但我们需要像通常的编辑一样自由移动光标。
在这里编辑意味着在编辑器中轻松打开这样的脚本文件,然后:
- 随时通过编辑,查看终端代码所传达的字符变化(颜色、属性)
- (可选)一些在终端网格上相邻但在文件中被一些控制字符分隔的字符将对此有视觉提示
- 插入一些文本的能力,
- 删除部分,
- 使用所有编辑器功能,如搜索/替换等。
- 从文件复制和粘贴(包括到外部程序,它只接收纯文本)
- 在我最疯狂的梦想中,某种“扁平化”动作,比如选择一个带有大量编辑命令行的序列,然后用一系列简单的字符替换它,就好像它是在一次运行中键入的一样。上面提到的“视觉提示”会消失。