!: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