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


13

使用^W(UNIXワードラブアウト)私は簡単に私のbashシェルで、現在のコマンドからのシングル「言葉」を削除することができます。

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

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

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

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

zshへの切り替えはオプションですか?(私はzshでそれを行う方法を知らないが、コマンドライン解析コードがラインエディター(または少なくとも補完システム)にアクセスできるので、それが簡単になるはずです)。
ジル「SO-悪であるのをやめる」

回答:


14

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

探しているコマンドは「shell-backward-kill-word」と呼ばれます。最初にショートカットを選択する必要があります。「前のコマンド」であるため、Crtl + pを使用しましょう-上矢印と同じです。

bind '"\C-p": shell-backward-kill-word'
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.