!:0
トリックを行う必要があります。 zsh ドキュメントから:
Word Designators A word designator indicates which word or words of a given command line are to be included in a history reference. A `:' usually separates the event specification from the word designator. It may be omitted only if the word designator begins with a `^', `$', `*', `-' or `%'. Word designators include: 0 The first input word (command). n The nth argument. ^ The first argument. That is, 1. $ The last argument. % The word matched by (the most recent) ?str search. x-y A range of words; x defaults to 0. * All the arguments, or a null value if there are none. x* Abbreviates `x-$'. x- Like `x*' but omitting word $.
(bash でも動作します。) !-1
もあります。 その方が入力しやすい場合は。
#TL;DRAlt +0 +. :引数なしで最後のコマンドを挿入します
Ubuntu 18.04 でデフォルトのキーバインド設定 (つまり、Emacs キーバインド) でテスト済み
キーボード ショートカットを組み合わせることができます
最後のコマンドを次のように考えてみましょう:
mv foo bar
アップ , Ctrl +w :最後の単語のない最後のコマンド =mv foo
Alt +0 +. :最後のコマンドの最初の引数 =mv
便利なショートカット:
-
Alt +. :最後のコマンドから最後の引数を挿入 (繰り返して履歴に戻る)
-
Alt +数 +. :最後のコマンドから #n 番目の最後の引数を挿入 (繰り返して履歴に戻る)
-
Alt +- , 数 、Alt +. 、zsh: Alt +- +# +. :最後のコマンドから #n 番目の最初の引数を挿入 (繰り返して履歴に戻る)
-
カット コマンド (カーソルの位置に相対的)
-
Ctrl +w :最後の単語をカット
-
Alt +日 :次の単語をカット
-
Ctrl +k :後はすべてカット
-
Ctrl +う 、zsh: Alt +w :前のすべてをカット
-
zsh: Ctrl +う :コマンド全体をカットします (bash では Ctrl を組み合わせることができます +う , Ctrl +k )
-
Ctrl +y :Cut コマンドで以前に切り取った文字を貼り付けます . bash では、cut コマンドを連鎖できます 、および Ctrl +y それらをすべて貼り付けます。
-
Ctrl +_ :最後の編集を元に戻す (Ctrl を超えると非常に便利です) +w )
-
Ctrl +左 :最後の単語に移動
-
Ctrl +右 :次の単語に移動
-
ホーム または Ctrl +a :コマンドの先頭に移動
-
終了 または Ctrl +え :コマンドの最後に移動
利用可能なすべてのショートカットを表示するには
- バッシュ:
bind -lp
- zsh:
bindkey -L
残念ながら、いくつかの制限があります
「words」には a-zA-Z
のみが含まれます 文字なので、記号文字は単語のショートカットを停止します。
最後の引数が URL で、Ctrl で消去したい場合 +w 面倒です。
例:curl -I --header "Connection: Keep-Alive" https://stackoverflow.com/questions/38176514/re-run-previous-command-with-different-arguments
そのURLを消去するには Ctrl を使用 +w 、12 回繰り返す必要があります。
スペース文字でのみ停止する同様のショートカットがあると便利です
ここでこれを最新に保ちます:https://github.com/madacol/docs/blob/master/bash-zsh_TerminalShorcuts.md