我想在bash和/或zsh中将C-?
绑定到history-search-backward。我尝试了以下方式
bind '"^?": history-search-backward' # bash
bindkey '^?' history-search-backward # zsh
绑定工作正常,但同时BS
(退格)停止正常工作。原因是BS
生成与C-?
相同的代码,可以使用C-v BS
和C-v C-?
进行检查。因此,最终结果是C-?
和BS
都与历史搜索 - 向后结合,这显然不是我想要的。
所以问题是我如何正确绑定C-?
而不影响BS
?
答案 0 :(得分:0)
终端确定按键或键组合时向shell发送的字符串。
按下退格键时,默认情况下,很多(大多数?)终端仿真器默认发送^?
(ASCII 0x7f,删除)。而实际的退格字符是^H
(ASCII 0x08,Backspace)。
如果您可以更改终端模拟器的行为以发送^H
,您应该能够维护退格键的功能,同时仍然能够将^?
绑定到其他位置。
终端模拟器为配置提供GUI(gnome-terminal
,roxterm
,konsole
,...)应该有一个选项。
其他人(xterm
,urxvt
,...)可能拥有可在~/.Xdefaults
中设置的相应X资源(或 - 取决于您的发布内容 - ~/.Xresources
) 。
对于xterm
,您需要设置:
XTerm.backarrowKeyIsErase: False
urxvt
设置
URxvt.backspacekey: ^H
请注意,这是实际的^H
(ASCII 0x08)字符,而不是由^
和H
组成的双字符字符串。
要加载这些设置,请致电xrdb -merge ~/.Xdefaults
或关闭并重新启动X会话。 (仅为新终端启用设置)