如何在Bash中解除绑定并重新映射C-w?

时间:2012-06-11 12:58:47

标签: bash readline

我想在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

2 个答案:

答案 0 :(得分:13)

Ctrl - w 绑定在sttywerase。你需要先解开它。

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