如何在Bash中解除绑定并重新映射Cw?

mal*_*ana 11 bash readline

我想映射Ctrl- wkill-region在猛砸4.2.unix-word-rubout默认情况下,此键绑定(向后删除单词).根据手册,可以使用bind具有选项的命令重新映射

-u function取消绑定绑定到指定函数的所有键.

-r keyseq删除keyseq的所有当前绑定.

我试过了bind -r "\C-w",bind -u unix-word-rubout但关键不是没有设置,正如所bind -P | grep unix-word-rubout揭示的那样,映射没有变化.

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

Pau*_*ce. 14

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

stty werase undef
bind '"\C-w":kill-region'
Run Code Online (Sandbox Code Playgroud)


mha*_*ger 13

默认情况下,readline尝试将内核终端驱动程序专门处理的控制字符绑定到其readline等效项.(要查看终端的配置方式,请运行

stty -a
Run Code Online (Sandbox Code Playgroud)

.)你的终端可能已经Ctrl-w设置为werase,所以bash绑定它unix-word-rubout.此绑定优先于您指定的任何键绑定~/.inputrc.

为了避免这种映射,你需要readline的变量设置bind-tty-special-charsoff您的~/.inputrc文件中:

set bind-tty-special-chars off
Run Code Online (Sandbox Code Playgroud)