Existem muitas maneiras de esfolar esse gato!
Para substituir uma string específica, ^old^new^extra
receberá o comando anterior, substituirá old
por new
e acrescente extra
. Você pode parar o quanto quiser; por exemplo. ^old
substituirá old
pela string vazia e anexará a string vazia (essencialmente excluindo old
e não fazendo mais nada).
1. ^diff^checkout
2. ^cat^rm
Variante especialmente útil disso:
for i in 'seq 1 10'; do echo something complicated; done
# inspect the output to see if it looks right
^echo
Para substituir uma palavra específica, você pode usar !m:n-p
para se referir às palavras n
a p
do comando m
(use números negativos para contar de volta a partir do comando atual). Você pode omitir a parte -p
para se referir a uma única palavra e omitir a parte :m-p
para se referir a um comando inteiro. Formulários especiais !!
para !-1
, !$
para a última palavra do comando anterior e !*
para os argumentos (todos menos a palavra 0
) do comando anterior são muito úteis.
1. !!:0 checkout !!:2-
2. rm !*
Eu geralmente uso os dois; O zsh é especialmente legal aqui, já que clicar na guia expandirá as informações ocultas para garantir que você acertou.
Existem também muitas maneiras de fazer isso com a edição de linha. Leia os atalhos de teclado do seu shell.