Bash:我可以设置 Ctrl-Backspace 来向后删除单词吗?

Ado*_*obe 22 bash

在 shell (bash) 中时 - 我想让 Ctrl-Backspace 绑定到“向后删除单词”。是否可以?

编辑

konsole在 KDE使用- 终端。

小智 13

我通过谷歌找到了这个线程,但答案不是我想听到的。所以我玩了:

在我的终端上,正常退格键会发送^H,而 ctrl+退格键会发送^?. 所以它应该是一个简单的重新绑定^?删除单词的情况,默认情况下可以通过 Ctrl+W 使用。

首先(尝试不成功):

$ bind -P | grep 'C-w'
unix-word-rubout can be found on "\C-w".
Run Code Online (Sandbox Code Playgroud)

因此,这应该有效:

$ bind '"\C-?":unix-word-rubout'
Run Code Online (Sandbox Code Playgroud)

然而它并没有......有人能够解释吗?

第二次(成功)尝试:

$ bind '"\C-?":"^W"'
Run Code Online (Sandbox Code Playgroud)

其中^W是文字/原始^W(按 ctrl+V 然后按 ctrl+W 使其出现)。


小智 12

为什么不使用已经在大多数终端中映射的Alt+BackspaceCtrl+ W。不确定控制台。Xmodmap (man xmodmap) 也可用于重新映射其他自定义键。(矛盾的是,xmodmap 不能很好地重新映射 Backspace,因为终端覆盖了映射,但它适用于大多数键......)。

  • 因为我曾经在 Emacs 中使用 Ctrl-Backspace。我知道 Ctrl-w。Alt-Backspace 对我来说是新的(+1)。 (12认同)
  • 令人讨厌的是,在大多数主要操作系统的大多数 GUI 应用程序中,ctrl+backspace 是“向后删除单词”的一种非常常见的映射。同样,Ctrl+W 广泛用于“关闭窗口”。Alt+w 很少用于 GUI 中的任何东西,我能想到的。标准化会很棒。我想知道更大的中断、更改终端或更改 GUI 会是什么? (8认同)

小智 12

只需编辑您的~/.inputrc(您可能需要创建一个或复制其中的一个/etc/inputrc),使其包含:

# Ctrl-Delete: delete next word
"\e[3;5~": shell-kill-word

# Ctrl-Backspace
"\C-H": shell-backward-kill-word
Run Code Online (Sandbox Code Playgroud)

这也将映射Ctrl+Delete以删除光标旁边的单词。


Bra*_*son 6

这里有一些很好的答案,但我在 Konsole 中使用 Settings->Edit Current Profile->Keyboard->Edit 解决了它,然后添加了从Backspace+Control到的映射\x17。(我使用 找到了 Ctrl-w 的 ASCII 代码showkey --ascii。)