使用^W
(unix-word-rubout) 我可以轻松地从 bash shell 中的当前命令中删除单个“单词”。
但是,在处理包含空格的带引号的参数(或包含反斜杠转义空格的未加引号的参数)时,这种方法效果不佳,因为它只删除一个单词而不是整个参数。
所以我正在寻找一种删除整个参数的方法。
示例(光标始终位于末尾):
$ foo --bar "foo bar" meow
[black magic]
$ foo --bar "foo bar"
[black magic]
$ foo --bar
[black magic]
$ foo
答案1
Bash 具有默认情况下未绑定的 readline 命令。您可以在参考中找到它们:http://www.gnu.org/software/bash/manual/html_node/Bindable-Readline-Commands.html#Bindable-Readline-Commands
这命令您正在寻找的称为shell-backward-kill-word
。您必须先选择一个快捷方式。让我们使用Ctrlp,因为它是“上一个命令” - 与向上箭头相同。
bind '"\C-p": shell-backward-kill-word'