在bash中,如何进行控制 – 删除平均杀词?

Bash使用readline,readline可以用“kill-word”删除光标右边的单词。

问题在于识别控制删除的按键。 当我按bash时,在屏幕上输出“5〜”。 我可以为此绑定,但这意味着有一天我需要键入“5〜”,而不是删除右侧的单词! 所以我宁愿发现正确的控制顺序。

我已经search了一下,有不less资源讨论“删除”键,但是我没有发现讨论“控制 – 删除”键的问题。 我已经尝试了很多变化,但没有任何工作。

最糟糕的是我在这个乏味的,毫无头绪的研究上花费的时间,当它真的应该是一个没有问题的时候。

编辑:这是通过X,所以也许有一个xev和xmodmap解决scheme

在我的机器上,按下Ctrl-V,Ctrl-Delete输出:

^[[3;5~ 

^[转义字符可以用\ e替换,所以你可以像这样使用bash绑定(例如在你的~/.bashrc中):

 bind '"\e[3;5~":kill-word' 

或者,您可以将以下内容添加到~/.inputrc以便在任何使用readline的程序中,Ctrl-Delete都会执行kill-word:

 "\e[3;5~": kill-word 

这只会绑定Ctrl-Delete键,如果你需要键入5〜,你不必担心会发生什么。

你看到的不是全部的事实。 这可能是<ESC>5~或类似的东西。 试试Ctrl-V Ctrl-Delete。 Ctrl-V的意思是“不要解释下一件事”。

所以绑定<ESC>5~应该是相当安全的。

如果你输入^ Q ^ V(即Control-Q后跟Control-V,释放它们之间的Control键就可以了),然后按下Control-Delete,你会得到你提到的输出吗? 我只是试了一下,至少用腻子我根本得不到回应。 但是,实际的Linux控制台上的行为也许是不同的。

对于其他键,readline会打印一个较长的序列,通常包含一个特殊的“命令序列介绍”字符,这种字符很难误输入。 尝试一下,看看你是否用^ Q ^ V命令得到更长的序列(这就是btw,称为quoted-insert)。

例如,如果我按^ Q ^ V然后删除(没有控制按住),readline打印^[[3~ 3〜。 这告诉我,我可以通过说\e[[3~ 。 CSI角色似乎很可能会出现在你身上,但是你并没有看到它,因为你不会要求readline正确地引用输入。

Alt + D删除光标右边的一个单词Ctrl + W删除光标左边的一个单词(都是基于Emacs的,我相信)

Ctrl-W删除单词。

Ctrl-u删除行。

他们基于Emacs(Mw和Mu)。