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

问题描述 投票:0回答:1

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

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

我可以使用bind '"\e[21~":"\e[A"'绑定其他东西,比如箭头键,所以我认为像bind '"\e[21~":"\e[[31m"'这样的东西应该发出颜色代码并改变fg颜色。

它没有。我该如何工作?

bash colors readline
1个回答
1
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.