3

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

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

我用谷歌搜索过,很多资源讨论了“删除”键,但我发现没有一个讨论“控制删除”键。我尝试了许多变化,但没有任何效果。

最糟糕的是我在这种乏味、无意识的磨练上花费了几个小时,而这真的不应该成为问题。

编辑:它是通过 X,所以也许有 xev 和 xmodmap 的解决方案

4

5 回答 5

14

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

^[[3;5~

转义字符可以用^[\e 替换,因此您可以像这样对 bash 使用 bind(在您~/.bashrc的示例中):

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

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

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

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

于 2009-03-24T13:39:04.297 回答
4

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

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

于 2009-03-24T13:19:58.757 回答
3

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

于 2009-06-12T15:14:03.690 回答
2

如果你输入 ^Q^V(即 Control-Q 后跟 Control-V,松开它们之间的 Control 键就可以了),然后按下 Control-Delete,你会得到你提到的输出吗?我刚刚尝试过,至少使用腻子我根本没有得到回应。不过,实际 Linux 控制台上的行为可能有所不同。

对于其他键,readline 打印更长的序列,通常包括一个特殊的“命令序列介绍”字符,很难输入错误。试试看,看看您是否使用 ^Q^V 命令(顺便说一句,称为quoted-insert)获得更长的序列。

例如,如果我按 ^Q^V 然后按 Delete (不按住控件),readline 将打印^[[3~. 这告诉我,我可以通过说将内容绑定到 Delete 键\e[[3~。CSI 字符似乎很有可能出现在您面前,但您没有看到它,因为您没有要求 readline 正确引用输入。

于 2009-03-24T13:17:21.463 回答
0

Ctrl-W 删除单词。

Ctrl-u 删除行。

它们基于 Emacs(Mw 和 Mu)。

于 2009-03-24T15:21:15.987 回答