¿Cómo repetir el parámetro actualmente escrito en zsh?

¿Cómo repetir el parámetro actualmente escrito en zsh?

A veces sólo necesitamos escribir un nombre ligeramente diferente cuando usamos mv/cp/convert. Por ejemplo,

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

¿Cómo puedo repetir IMG-long-number.jpg antes de escribir IMG-long-number.png, de modo que solo tenga que hacer un pequeño ajuste?

Esto es similar a¿Cómo repetir el parámetro actualmente escrito en la consola bash?pero para zsh/zle.

Respuesta1

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

$ echo a

Al escribir !#$y luego presionar Tabse expande !#$a a. La finalización con tabulación también enumera otras opciones si intenta una operación con ::

$ 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

Respuesta2

Una alternativa a tener en cuenta es que: no lo haces.

Después de usar la finalización para obtener

convertir IMG-número-largo.jpg
simplemente edite eso en

convertir IMG-número-largo.{jpg,png}

Respuesta3

Usaría Ctrl+Alt+_eso copia la palabra anterior ( copy-prev-wordwidget). Una vez copiada, puede utilizar Backspacepara editar la extensión de la copia.

O utilícelo Ctrl+Wpara eliminarlo por completo. De forma predeterminada, Ctrl+Welimina palabras completas (definidas como alnums+$WORDCHARS), pero puedes cambiar el comportamiento a pedido con el select-word-stylewidget.

En ~/.zshrc:

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

Luego, puedes seleccionar un diferenteestilo de palabracon Alt+Shift+W. Puedes usar el bashestilo de palabra (solo palabras alnums) aquí (la referencia es a cómo funcionan bashlos widgets de palabras).otro queCtrl+Wcomo Alt+B, Alt+D... considerapalabras).

Respuesta4

Similar a lo que sugirió @muru - !#$<TAB>. Pero también hice enlaces como este en mi .zshrc:

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

De esa manera, presionar Escluego la coma lo hará por usted, similar a cuando Escluego el punto le dará el último argumento del comando anterior.

información relacionada