!:0 sollte den Trick machen. Aus der zsh-Dokumentation:
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 $.
(Es funktioniert auch mit Bash.) Es gibt auch !-1 wenn Sie das einfacher zu tippen finden.
#TL;DRAlt +0 +. :fügt den letzten Befehl ohne die Argumente ein
Getestet auf Ubuntu 18.04 mit den Standard-Keybinding-Einstellungen (d. h. Emacs-Keybindings)
Sie können Tastaturkürzel kombinieren
Betrachten wir den letzten Befehl als:
mv foo bar
nach oben , Strg +w :letzter Befehl ohne das letzte Wort =mv foo
Alt +0 +. :erstes Argument des letzten Befehls =mv
Einige nützliche Abkürzungen:
-
Alt +. :letztes Argument aus letztem Befehl einfügen (wiederholen um zurück in den Verlauf zu gehen)
-
Alt +Nummer +. :#n-tes letztes Argument vom letzten Befehl einfügen (wiederholen, um in der Historie zurückzugehen)
-
Alt +- , Nummer , Alt +. , zsh: Alt +- +# +. :#n-tes erstes Argument vom letzten Befehl einfügen (wiederholen, um in der Historie zurückzugehen)
-
Ausschneidebefehle (relativ zur Position des Cursors)
-
Strg +w :schneidet letztes Wort ab
-
Alt +d :schneidet nächstes Wort ab
-
Strg +k :schneidet alles nach
-
Strg +u , zsh: Alt +w :schneidet alles vorher ab
-
zsh: Strg +u :schneidet den gesamten Befehl (In Bash können Sie Strg kombinieren +u , Strg +k )
-
Strg +y :fügen Sie Zeichen ein, die zuvor mit einem beliebigen Ausschneidebefehl ausgeschnitten wurden . In Bash können Sie Ausschneidebefehle verketten , und Strg +y fügt sie alle ein.
-
Strg +_ :Letzte Änderung rückgängig machen (sehr nützlich, wenn Strg überschritten wird +w )
-
Strg +links :Zum letzten Wort wechseln
-
Strg +richtig :Zum nächsten Wort wechseln
-
Startseite oder Strg +a :Zum Anfang des Befehls wechseln
-
Ende oder Strg +e :Zum Ende des Befehls wechseln
Zum Anzeigen aller verfügbaren Verknüpfungen
- bash:
bind -lp - zsh:
bindkey -L
Leider gibt es einige Einschränkungen
"words" enthält nur a-zA-Z Zeichen, so dass jedes Symbolzeichen Wortverknüpfungen stoppt.
Wenn also das letzte Argument eine URL war und Sie sie mit Strg löschen möchten +w es wird ein Schmerz sein.
Beispiel:curl -I --header "Connection: Keep-Alive" https://stackoverflow.com/questions/38176514/re-run-previous-command-with-different-arguments
Um diese URL zu löschen mit Strg +w , müssten Sie es 12 Mal wiederholen.
Es wäre großartig, ähnliche Verknüpfungen zu haben, die nur beim Leerzeichen aufhören
Ich halte dies hier aktuell:https://github.com/madacol/docs/blob/master/bash-zsh_TerminalShorcuts.md