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.jpgsimplemente edite eso en
convertir IMG-número-largo.{jpg,png}
Respuesta3
Usaría Ctrl+Alt+_eso copia la palabra anterior ( copy-prev-word
widget). 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-style
widget.
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 bash
estilo de palabra (solo palabras alnums) aquí (la referencia es a cómo funcionan bash
los 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 Esc
luego la coma lo hará por usted, similar a cuando Esc
luego el punto le dará el último argumento del comando anterior.