在shell中(bash)时-我想将Ctrl-Backspace绑定到“向后删除单词”。可能吗?
编辑:
我konsole
在KDE 使用-终端。
Ctrl-w
在控制台中“删除上一个单词”,并且即使在Eclipse或Chrome中,也可以通过本能进行操作,这意味着关闭选项卡/关闭当前文件。很烦人。
在shell中(bash)时-我想将Ctrl-Backspace绑定到“向后删除单词”。可能吗?
编辑:
我konsole
在KDE 使用-终端。
Ctrl-w
在控制台中“删除上一个单词”,并且即使在Eclipse或Chrome中,也可以通过本能进行操作,这意味着关闭选项卡/关闭当前文件。很烦人。
Answers:
为什么不只使用大多数终端中已经映射的Alt+ Backspace或Ctrl+ W。不确定控制台。Xmodmap(man xmodmap)也可以用于重新映射其他自定义键。(自相矛盾的是,xmodmap不能很好地重新映射Backspace,因为终端会覆盖映射,但是它可以与大多数键配合使用...)。
我通过Google找到了这个主题,但是答案不是我想听到的。所以我玩了一下:
在我的终端上,普通退格键发送^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使其显示)。
那取决于bash看到了什么。在常规的终端交互中,bash不会看到您按下的键修饰符,只会看到生成的字符。例如,退格已经与control-H相同。按住换档或控制不起作用。
但是,您的终端应用程序(xterm?cmd?Terminal?Putty?取决于您的操作系统)可以看到您的按键,并且可以通过一种方法将Control-Backspace组合键映射到bash可以分辨的东西(除了退格键之外)。
key Backspace-Shift-Control : "\x7f"
并且key Backspace-Shift+Control : "\E[9;3~"
还可以在标题行上更改标题行:keyboard "Xfree4 Modlist"
。然后,您可以添加"\e[9;3~": backward-kill-word"
到〜/ .inputrc
尝试这个:
bind '"\C-_":backward-kill-word'
(可选)将以下内容添加到〜/ .inputrc以使其永久:
"\C-_": backward-kill-word
在Kubuntu 14.04中使用bash 4.3.11进行工作
GNU bash, version 4.4.12(3)-release (x86_64-unknown-cygwin)
。
在大多数终端上,CTRL + W应该已经向后删除了一个单词。这适用于xterm,我猜它适用于konsole。CTRL + W是基于文本的程序上的标准键绑定,可在插入模式,emacs和每个shell中与vim一起使用。
Ctrl+w
恕我直言,这是您应该习惯的。