![删除当前 bash 命令行中的整个参数](https://linux22.com/image/30692/%E5%88%A0%E9%99%A4%E5%BD%93%E5%89%8D%20bash%20%E5%91%BD%E4%BB%A4%E8%A1%8C%E4%B8%AD%E7%9A%84%E6%95%B4%E4%B8%AA%E5%8F%82%E6%95%B0.png)
使用^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'