为什么readline没有取消设置`backward-delete-char`?

时间:2018-03-05 08:27:45

标签: readline libreadline

我需要将代码127(又名DEL,又名^?)绑定到delete-char

如果我将DEL: delete-char添加到~/.inputrc,则无效。这是因为默认情况下backward-delete-char使用此代码。

所以,首先我需要从backward-delete-char

中释放此代码
$ bind -u backward-delete-char

但由于某种原因,它并没有被取消:

$ bind -q backward-delete-char
backward-delete-char can be invoked via "\C-?".

readline 库的源代码(供本地使用)应该更改哪些内容以解除\C-? backward-delete-char的绑定?

N.B。如果我取消设置delete-char,它可以完美运行:

$ bind -u delete-char
$ bind -q delete-char
delete-char is not bound to any keys.

1 个答案:

答案 0 :(得分:1)

正在运行GNU bash, version 4.4.19(1)-release (x86_64-apple-darwin16.6.0),我看到的是同一件事。我可以通过以下方法取消想要的设置:bind -m emacs-meta -u backward-kill-word

根据维护者Chet:

  

除非您使用-m' option, the commands act on the current keymap, which is either emacs'或(通常)“ vi-insert”

我发现他的示例命令不是很有效,只有-m emacs-meta有效-但我不确定如何精确地发现哪个键映射适用。

发现过程:搜索邮件列表(Googled和site:http://lists.gnu.org/archive/html/bug-bash/ "bind -u")并提取: Re: Some readline functions can't be unbound with bind -u