我想在Bash 4.2中将 Ctrl - w 映射到kill-region
。默认情况下,此键绑定到unix-word-rubout
(向后删除单词)。根据手册,可以使用具有选项
bind
命令进行重新映射
-u功能 取消绑定绑定到指定函数的所有键。
-r keyseq 删除keyseq的所有当前绑定。
我尝试了bind -r "\C-w"
和bind -u unix-word-rubout
,但密钥未设置,并且正如bind -P | grep unix-word-rubout
所示,映射没有变化。
我和bind
玩了一点,我可以解除其他内置键的绑定,但不能 Ctrl - w 。
答案 0 :(得分:13)
Ctrl - w 绑定在stty
到werase
。你需要先解开它。
stty werase undef
bind '"\C-w":kill-region'
答案 1 :(得分:12)
默认情况下,readline尝试将内核终端驱动程序专门处理的控制字符绑定到其readline等效项。 (要查看终端的配置方式,请运行
stty -a
。)您的终端可能已将Ctrl-w
设置为werase
,因此bash将其绑定到unix-word-rubout
。此绑定优先于您在~/.inputrc
中指定的任何键绑定。
要避免此映射,您需要在bind-tty-special-chars
文件中将readline变量off
设置为~/.inputrc
:
set bind-tty-special-chars off