12

我想将Ctrl-映射wkill-regionBash 4.2 中。默认情况下,此键绑定到unix-word-rubout(向后删除单词)。根据手册,应该可以使用bind具有选项的命令进行重新映射

-u function 解除绑定到指定函数的所有键。

-r keyseq 删除keyeq 的任何当前绑定。

我试过了bind -r "\C-w"bind -u unix-word-rubout但钥匙没有取消,正如所bind -P | grep unix-word-rubout揭示的那样,映射没有变化。

我玩bind了一点,我可以解开其他内置键,但不能Ctrl- w

4

2 回答 2

16

Ctrl-w绑定sttywerase. 您需要先在那里解除绑定。

stty werase undef
bind '"\C-w":kill-region'
于 2012-06-11T13:14:19.503 回答
15

默认情况下,readline 尝试将内核终端驱动程序特别处理的控制字符绑定到它们的 readline 等效项。(要查看您的终端是如何配置的,请运行

stty -a

.) 您的终端可能已Ctrl-w设置为werase,因此 bash 将其绑定到unix-word-rubout. 此绑定优先于您在 中指定的任何键绑定~/.inputrc

为避免这种映射,您需要在文件中将 readline 变量设置bind-tty-special-chars为:off~/.inputrc

set bind-tty-special-chars off
于 2014-05-09T06:54:15.463 回答