Electronic Joint Business

Solution for E-Business

ANSI

利用 ANSI 转义码打造个人风格的命令行

大家都习惯了程序将输出打印到终端时,屏幕随着文本而滚动,其实你能做不仅限于此:你可以给文本上色,可以上、下、左、右移动光标,可以清除部分屏幕然后重新输出。这一切使得 Git 可以实现动态进度指示条、Vim 或 Bash 实现能够修改屏幕上的文本的编辑器而无需滚动终端。1

诸如 readline、jline 或 python Prompt Toolkit 等类库可让你用各种编程语言来实现类似操作, 但你可以自己动手。本文用一些 Python 示例展示了如何从命令行程序来如何控制终端的基础知识, 并讨论了你自己的代码要如何直接利用终端提供的这些特殊功能。.

大多数程序与 UNIX 终端交互的方式是通过 ANSI 转义码。这是一些特殊代码,你的程序将之输出以便向终端提供指令。不同的终端支持这些代码的不同子集, 很难找到一个“权威” 列表来说明每个代码的作用。维基百科给了一个不错的列表, 你还可以找到其他网站。

利用 ANSI 转移码,编写的程序可以工作在常见的 UNIX 系统上, 比如 Ubuntu 或 OS-X 。(对于 Windows ,建议你使用 Windows 10 TH2 以后版本,并如下修改注册表以支持 ANSI VT100 终端显示:找到“HKCU\Console” 创建一个 DWORD 类型的键,名称为“VirtualTerminalLevel”,值为 0x1 2)。本文将先探讨 ANSI 转义代码的基础知识, 并演示如何使用它们从零开始编写自己的交互式命令行程序。

富文本
最基本的 ANSI 转义码是那些参与文本渲染的编码。利用它们可以为打印文本添加”颜色”、”背景色”等修饰。打印的文本仍将最终显示在终端的底部, 并仍会使得终端滚动只不过是彩色文本, 而不是终端的默认黑白配色方案。

>>> 阅读全文

 

, ,