如何将 alt 退格键映射到 .inputrc 中的某些命令?

如何将 alt 退格键映射到 .inputrc 中的某些命令?

有谁知道如何在 inputrc 中将组合键与 Alt 绑定?

我想将组合键Alt+映射Backspacebackward-kill-word,但是当我按Ctrl+VAlt+Backspace查看它代表的字符时,它会^[在被删除之前显示一小会儿,或者根本不显示任何内容。

我知道为了将Ctrl+绑定Left Arrow到某些东西,我可以按Ctrl+ V,它将键入^[[1;5C然后替换^[\e,最后写入将此行添加到.inputrc

"\e[1;5C": forward-word

但这个方法对我来说不起作用Alt+ (literally anything)

答案1

对于通常发送单个字符的键,Alt+键通常发送转义字符,后跟该字符。特别是,Alt+Backspace发送\e\177其中\e是转义字符(在视觉上表示为^[),并且\177是退格字符(在视觉上表示为^?- 更准确地说,这是删除字符,但我将在这个答案中使用名称“退格”)。 (根据您的配置,退格字符可能会被\b直观地表示为^H。)

当您按Ctrl+ V Alt+时Backspace,Ctrl+V 字符告诉终端(或应用程序,取决于终端模式)按字面解释下一个字符,因此这会插入一个转义字符,该字符在视觉上表示为^[。然后终端还有一个字符需要读取,这是一个退格键,它会删除您刚刚输入的转义字符。

要查看按键发送的完整字符串,可以使用此命令,并在 2 秒内键入按键:

stty raw; sleep 2; echo; stty cooked

stty raw将终端切换到原始模式,其中控制字符按原样插入,然后stty cooked再切换回来。实际上,Alt+Backspace是极少数需要这样做的情况之一:大多数键和弦仅发送单个控制字符或转义字符,后跟可打印字符。

.inputrc, 中涵盖两种常见情况(使用删除或退格字符):

"\e\177": backward-kill-word
"\e\b": backward-kill-word

请注意,转义序列取决于您的终端。某些终端不发送某些键和弦的转义序列,或者发送非标准转义序列,对于多个键和弦可能是相同的。但是,如果您^[在按Ctrl+ V Alt+时短暂看到Backspace,则表明您的终端针对该特定键和弦执行了标准操作。

相关内容