Bash:我可以设置 Ctrl-Backspace 来删除单词“backward”吗?

Bash:我可以设置 Ctrl-Backspace 来删除单词“backward”吗?

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

编辑

konsole在 KDE 上使用终端。

答案1

为什么不直接使用大多数终端中已经映射的Alt+BackspaceCtrl+ W。不确定控制台。Xmodmap(man xmodmap)也可用于重新映射其他自定义键。(矛盾的是,xmodmap 无法很好地重新映射 Backspace,因为终端会覆盖映射,但它可以很好地与大多数键配合使用……)。

答案2

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

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

# Ctrl-Backspace
"\C-H": shell-backward-kill-word

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

答案3

我通过谷歌找到了这个帖子,但答案不是我想要的。所以我尝试了一下:

在我的终端上,普通退格键发送^H,而 ctrl+backspace 发送^?。因此,这应该只是重新绑定^?以删除单词的情况,默认情况下可通过 Ctrl+W 进行。

第一次(失败的尝试):

$ bind -P | grep 'C-w'
unix-word-rubout can be found on "\C-w".

因此这应该可行:

$ bind '"\C-?":unix-word-rubout'

然而事实并非如此...有人能解释一下吗?

第二次(成功)尝试:

$ bind '"\C-?":"^W"'

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

答案4

这取决于 bash 看到的内容。在常规终端交互中,bash 看不到您按下的键修饰符,只看到结果字符。例如,Backspace 已经与 control-H 相同。按住 shift 或 control 没有任何区别。

但是,您的终端应用程序(xterm?cmd?Terminal?Putty?取决于您的操作系统)可以看到您的按键,并且可能有办法将 control-backspace 组合键映射到 bash 可以区分于 backspace 的键上。

相关内容