我正在做一个终端录音,我想改变终端的前景色,以强调某些部分(如某些命令行参数)在录音中。
如何映射函数键以在bash/readline中发出颜色代码?
我可以使用bind '"\e[21~":"\e[A"'绑定到其他东西,比如箭头键,所以我认为做一些类似于bind '"\e[21~":"\e[[31m"'的事情应该发出一个颜色代码并更改fg颜色。
没有。我该怎么做呢?
发布于 2018-01-04 09:49:42
如果将键绑定到像\e[A这样的字符串,那么这个键就会发出这个字符串,然后由readline库再次解析这个字符串并对其进行解释(在本例中,表示"up“的意思是指向函数previous-history)。该字符串从未打印到终端。
因此,如果要打印某些内容,则需要将键绑定到打印任意内容的函数( ANSI颜色转义序列)。我不知道这样的读行函数,因为如果您仔细考虑,它就没有多大意义。问题是读行没有有色字符的概念(没有内部模型)。读行只适用于原始字符,没有字符样式。切换颜色,输入一些可见字符,然后使用光标键编辑已经键入的字符(可能是彩色的,可能是标准的) --这样的东西会导致重新绘制整条线。在这个过程中,颜色将很快被消除(因为读行并不真正了解它们)。
所以我想你想要的是不可能的。这是一个不受readline支持的特性,您不能简单地从外部(正确)添加到它中,而不会破坏一些东西。
https://stackoverflow.com/questions/48092218
复制相似问题