Como repetir o parâmetro digitado atualmente no zsh?

Como repetir o parâmetro digitado atualmente no zsh?

Às vezes, só precisamos digitar um nome ligeiramente diferente ao usar mv/cp/convert. Por exemplo,

convert IMG-long-number.jpg  IMG-long-number.png

Como posso repetir IMG-long-number.jpg antes de digitar IMG-long-number.png, então só preciso fazer pequenos ajustes?

Isto é semelhante aComo repetir o parâmetro atualmente digitado no console bash?mas para zsh/zle.

Responder1

!#$<Tab>funciona para mim. Dado:

$ echo a

Digitar !#$e pressionar Tabexpande !#$para a. A conclusão da guia também lista outras opções se você tentar uma operação com ::

$ echo a !#$:
&  -- repeat substitution
A  -- absolute path resolving symbolic links
Q  -- strip quotes
a  -- absolute path
c  -- PATH search for command
e  -- leave only extension
g  -- globally apply s or &
h  -- head - strip trailing path element
l  -- lower case all words
q  -- quote to escape further substitutions
r  -- root - strip suffix
s  -- substitute string
t  -- tail - strip directories
u  -- upper case all words

Responder2

Uma alternativa a ter em mente é esta: você não.

Depois de usar a conclusão para obter

converter IMG-número longo.jpg
simplesmente edite isso em

converter número longo IMG.{jpg,png}

Responder3

Eu usaria Ctrl+Alt+_isso para copiar a palavra anterior ( copy-prev-wordwidget). Uma vez copiado, você pode usar Backspacepara editar a extensão da cópia.

Ou use Ctrl+Wpara excluí-lo como um todo. Por padrão, Ctrl+Wexclui palavras inteiras (definidas como alnums+$WORDCHARS), mas você pode alterar o comportamento sob demanda com o select-word-stylewidget.

Em ~/.zshrc:

autoload select-word-style
zle -N select-word-style
bindkey '\eW' select-word-style

Em seguida, você pode selecionar um diferenteestilo de palavracom Alt+Shift+W. Você pode usar a bashpalavra estilo (somente palavras alnums) aqui (a referência é como bashos widgets de palavrasoutro que não sejaCtrl+Wtipo Alt+B, Alt+D... considerepalavras).

Responder4

Semelhante ao que @muru sugeriu - !#$<TAB>. Mas também fiz ligações como esta no meu .zshrc :

bindkey -s "^[," "!#\$^I"

Dessa forma, pressionar Esca vírgula fará isso por você, semelhante a quando Esco ponto fornecerá o último argumento do comando anterior.

informação relacionada