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)。