web-dev-qa-db-ja.com

現在のbashコマンドラインで引数全体を削除します

^W(unix-Word-rubout)を使用して、bashシェルの現在のコマンドから単一の「Word」を簡単に削除できます。

ただし、スペースを含む引用符付きの引数(またはバックスラッシュでエスケープされたスペースを含む引用符なしの引数)を処理する場合、引数全体ではなく1つのWordしか削除されないため、うまく機能しません。

だから私は引数全体を削除する方法を探しています。

例(カーソルは常に最後にあります):

$ foo --bar "foo bar" meow
[black magic]
$ foo --bar "foo bar"
[black magic]
$ foo --bar
[black magic]
$ foo
13
ThiefMaster

Bashには、デフォルトでバインドされていないreadlineコマンドがあります。これらは参照で見つけることができます: http://www.gnu.org/software/bash/manual/html_node/Bindable-Readline-Commands.html#Bindable-Readline-Commands

あなたが探している commandShell-backward-kill-Wordと呼ばれます。最初にショートカットを選択する必要があります。使ってみよう Ctrlp、「前のコマンド」なので、上矢印と同じです。

bind '"\C-p": Shell-backward-kill-Word'
14
Nykakin