删除当前 bash 命令行中的整个参数

删除当前 bash 命令行中的整个参数

使用^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'

相关内容