如何绑定功能键以发出颜色代码?

时间:2018-01-04 09:27:56

标签: bash colors readline

我正在进行终端录制,我想更改终端前景色以强调录制中的某些部分(例如某些命令行参数)。

如何映射功能键以在bash / readline中发出颜色代码?

我可以使用bind '"\e[21~":"\e[A"'绑定到箭头键之类的其他内容,所以我认为像bind '"\e[21~":"\e[[31m"'这样的操作应该发出颜色代码并更改fg颜色。

没有。我如何使这项工作?

1 个答案:

答案 0 :(得分:1)

如果将键绑定到类似\e[A的字符串,则此键会发出此字符串,而该字符串又会被readline库解析并解释(在本例中为“up”,然后指向函数previous-history)。字符串永远不会打印到终端。

因此,如果要打印某些内容,则需要将键绑定到打印任意内容的函数(ANSI颜色转义序列)。我不知道这样的readline函数,因为如果你认为它没有多大意义。问题是readline没有彩色字符的概念(没有内部模型)。 Readline仅适用于原始字符,没有字符样式。切换颜色,输入一些可见的字符,然后使用光标键编辑已经键入的(可能是彩色的,也许是标准的)字符 - 这样的东西将导致整行的重绘。在这个过程中,颜色将被迅速消除(因为readline并不真正了解它们)。

所以我想你想要的是不可能的。这是readline不支持的功能,您不能简单地从外部添加(正确)而不会破坏它。