!:0
by měl udělat trik. Z dokumentace 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 $.
(Funguje to i s bash.) K dispozici je také !-1
pokud vám to přijde pohodlnější psát.
#TL;DRAlt +0 +. :vloží poslední příkaz bez argumentů
Testováno na Ubuntu 18.04 s výchozím nastavením kláves (tj. kláves Emacs)
Klávesové zkratky můžete kombinovat
Předpokládejme, že poslední příkaz je:
mv foo bar
nahoru , Ctrl +w :poslední příkaz bez posledního slova =mv foo
Alt +0 +. :první argument posledního příkazu =mv
Některé užitečné zkratky:
-
Alt +. :vložte poslední argument z posledního příkazu (opakováním se vrátíte do historie)
-
Alt +číslo +. :vložte #n-tý poslední argument z posledního příkazu (opakováním se vrátíte do historie)
-
Alt +- , číslo , Alt +. , zsh: Alt +- +# +. :vložte #n-tý první argument z posledního příkazu (opakováním se vrátíte do historie)
-
Příkazy pro vyjmutí (vzhledem k pozici kurzoru)
-
Ctrl +w :přeruší poslední slovo
-
Alt +d :vystřihne další slovo
-
Ctrl +k :ořízne vše po
-
Ctrl +u , zsh: Alt +w :ořízne vše předtím
-
zsh: Ctrl +u :vyjme celý příkaz (V bash můžete kombinovat Ctrl +u , Ctrl +k )
-
Ctrl +y :vložte znaky, které byly dříve vyříznuty pomocí libovolného příkazu Vyjmout . V bash příkazy oříznutí můžete řetězit a Ctrl +y vloží je všechny.
-
Ctrl + :vrátit zpět poslední úpravu (velmi užitečné při překročení Ctrl +w )
-
Ctrl +doleva :přesun na poslední slovo
-
Ctrl +vpravo :přechod na další slovo
-
domů nebo Ctrl +a :přesun na začátek příkazu
-
konec nebo Ctrl +e :přesun na konec příkazu
Chcete-li zobrazit všechny dostupné zkratky
- bash:
bind -lp
- zsh:
bindkey -L
Bohužel existují určitá omezení
"words" zahrnuje pouze a-zA-Z
znaků, takže jakýkoli znak symbolu zastaví slovní zkratky.
Pokud tedy byl posledním argumentem adresa URL a chcete ji vymazat pomocí Ctrl +w bude to bolest.
Např.:curl -I --header "Connection: Keep-Alive" https://stackoverflow.com/questions/38176514/re-run-previous-command-with-different-arguments
Chcete-li vymazat tuto url pomocí Ctrl +w , museli byste to opakovat 12krát.
Bylo by skvělé mít podobné zkratky, které se zastavují pouze u znaku mezery
Udržuji to aktuální zde:https://github.com/madacol/docs/blob/master/bash-zsh_TerminalShorcuts.md