Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Bash中解除绑定并重新映射C-w?_Bash_Readline - Fatal编程技术网

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

如何在Bash中解除绑定并重新映射C-w?,bash,readline,Bash,Readline,我想在bash4.2中将Ctrl-w映射到kill区域。默认情况下,此键绑定到unix word rubout(向后删除word)。根据手册,应可使用带有选项的bind命令重新映射 -u函数 解除绑定到命名函数的所有键的绑定 -r键EQ 移除keyseq的所有当前绑定 我尝试了bind-r“\C-w”和bind-uunix单词rubout,但键没有取消设置,正如bind-p | grep unix单词rubout显示的那样,映射没有变化 我玩了一点bind,我可以解除其他内置键的绑定,但不能解除

我想在bash4.2中将Ctrl-w映射到
kill区域。默认情况下,此键绑定到unix word rubout(向后删除word)。根据手册,应可使用带有选项的
bind
命令重新映射

-u函数 解除绑定到命名函数的所有键的绑定

-r键EQ 移除keyseq的所有当前绑定

我尝试了
bind-r“\C-w”
bind-uunix单词rubout
,但键没有取消设置,正如
bind-p | grep unix单词rubout
显示的那样,映射没有变化

我玩了一点
bind
,我可以解除其他内置键的绑定,但不能解除Ctrl-w。Ctrl-w在
stty
中绑定到
werase
。你需要先把它解开

stty werase undef
bind '"\C-w":kill-region'

默认情况下,readline尝试将内核终端驱动程序专门处理的控制字符绑定到它们的readline等价物。(要查看终端的配置,请运行

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

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

set bind-tty-special-chars off