我正在进行终端录制,我想更改终端前景色以强调录制中的某些部分(例如某些命令行参数)。
如何映射功能键以在bash / readline中发出颜色代码?
我可以使用bind '"\e[21~":"\e[A"'
绑定到箭头键之类的其他内容,所以我认为像bind '"\e[21~":"\e[[31m"'
这样的操作应该发出颜色代码并更改fg颜色。
没有。我如何使这项工作?
答案 0 :(得分:1)
如果将键绑定到类似\e[A
的字符串,则此键会发出此字符串,而该字符串又会被readline库解析并解释(在本例中为“up”,然后指向函数previous-history
)。字符串永远不会打印到终端。
因此,如果要打印某些内容,则需要将键绑定到打印任意内容的函数(ANSI颜色转义序列)。我不知道这样的readline函数,因为如果你认为它没有多大意义。问题是readline没有彩色字符的概念(没有内部模型)。 Readline仅适用于原始字符,没有字符样式。切换颜色,输入一些可见的字符,然后使用光标键编辑已经键入的(可能是彩色的,也许是标准的)字符 - 这样的东西将导致整行的重绘。在这个过程中,颜色将被迅速消除(因为readline并不真正了解它们)。
所以我想你想要的是不可能的。这是readline不支持的功能,您不能简单地从外部添加(正确)而不会破坏它。