without update chsh zsh

zsh - update - ¿Cómo repetir la última parte de un comando anterior?



zsh wiki (8)

agregar bindkey ''/ e.'' insert-last-word a su .zshrc

- sp3ctum, en comentario here

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 .