Digamos que executei um comando
foo a b c d e f
Posso então usar $!
para acessar o último argumento desse comando, ou seja, se eu digitar
echo !$
ele se transforma em echo f
. Da mesma forma, posso usar
echo !:4
para acessar o 4º elemento, d
, mas isso significa que tenho que contar da esquerda. Existe uma notação para acessar o enésimo elemento da direita?
Você pode usar o widget
copy-prev-word
, bound toESC-.
(unbound por padrão no modo vi — as ligações padrão do vi estão sem a maioria das conveniências que não existem no vi). Por padrão, ele insere a última palavra do comando anterior. Com um argumento de prefixo positivo N, ele insere a N-ésima palavra do final (1 sendo a última palavra). Com zero ou um argumento negativo, ele conta as palavras do início.Então, depois
echo a b c d e f
, pressioneESC 2 ESC .
(ou seja,M-2 M-.
que geralmente pode ser digitado como Alt+ 2 Alt+ .) para inserire
.Você pode preferir vincular
copy-prev-shell-word
a uma chave em vez disso. A diferença é quecopy-prev-word
trata palavras como puramente separadas por espaços em branco, enquantocopy-prev-shell-word
leva em conta aspas de shell.Repetir
copy-prev-word
substitui a palavra que acabou de ser inserida pela palavra na mesma posição do comando anterior. Há também um widgetcopy-earlier-word
(não vinculado a uma tecla por padrão), que funciona de forma um pouco diferente: repetircopy-earlier-word
substitui a palavra que acabou de ser inserida pela palavra anterior do mesmo comando.