zsh - update - ¿Cómo repetir la última parte de un comando anterior?
Estoy usando zsh con el framework oh-my-zsh de Robby Russell. ¿Cómo puedo crear un atajo o algo para repetir la última parte de un comando?
por ejemplo, si escribo:
mv something in/this/difficult/to/type/directory
¿hay alguna forma de obtener esto fácilmente: en / this / difficult / to / type / directory?
Acabo de probar y parece que puedes hacerlo de la misma manera que en bash:! !$ .
Me encontré con esto también: siempre he usado Alt. para insert-last-word en bash. Encontrado donde oh-my-zsh anula esto.
En lib / key-bindings.zsh, comente esto y debería funcionar como en bash:
bindkey -s ''/e.'' "../n"
Solo para expandir la respuesta de @Charles Gueunet;
-
!!- repite todo el último comando
Esto es útil si olvidó agregar sudo al comienzo del comando. Ejemplo trivial:
$ cat /some/root/owned/thing/with/a/long/path
Permission denied
$ sudo !!
here''s the conent
Ya sea que estés en bash o zsh , puedes usar el ! operador para recuperar argumentos de su comando anterior:
Si tomamos: echo abcd como ejemplo
-
!$- el último argumento: d -
!:*- todos los argumentos: abcd (se puede acortar!*) -
!:1- el primer argumento: a (lo mismo que!^) -
!:1-3- argumentos del primero al tercero: abc -
!:2-$- argumentos del segundo al último: bcd
Este último punto responde su pregunta, puede tomar la última parte de su comando.
Nota: $:0 es el último comando ejecutado, aquí sería echo en nuestro ejemplo
!$ te da el último parámetro del comando anterior.
Ejemplo:
$ echo hello world
hello world
$ echo !$
echo world
world
!* te da TODOS los argumentos del último comando.
Ejemplo:
% echo hello world
hello world
% echo !*
(expands to)-> % echo hello world
hello world
<esc>. también funciona fuera de la caja con zsh y oh-my-zsh .