Recientemente cambié a zsh, usandorobbyrusselloh-my-zsh
. Antes de eso, usaba bash con muchas cosas personalizadas y solo me falta una cosa porque zsh está tratando de ser "demasiado inteligente":
Si escribo git commit
y luego ↑zsh revisa todos git
los comandos recientes. Sin embargo, lo que realmente quiero es revisar todos los comandos que comienzan con git commit
(no solo git
).
¿Cómo puedo lograr este comportamiento en (oh-my-)zsh?
Respuesta1
He encontrado la solución a mi problema en elDocumentación ZSH. Oh-my-zsh parece asignar las claves ↑y ↓a algo como
bindkey '\e[A' history-search-backward
bindkey '\e[B' history-search-forward
Lo que produce el comportamiento exacto que describí anteriormente. La documentación ZSH describe el comportamiento de history-search-backward
como
Busque hacia atrás en el historial una línea que comience conprimera palabra en el buffer.
En cambio, lo que quería era el siguiente mapeo, que inserté en mi ~/.zshrc
:
bindkey '\e[A' history-beginning-search-backward
bindkey '\e[B' history-beginning-search-forward
El comportamiento de history-beginning-search-backward
es el siguiente:
Buscar una línea en el historialcomenzando con la línea actual hasta el cursor. Esto deja el cursor en su posición original.
Además, si \e[A
no funciona con las flechas hacia arriba o hacia abajo, presione <ctrl-v><KEY (e.g., up arrow)>
en otra terminal que muestre ^[OA
. Entonces puedes usar esto en lugar de \e[A
. El proceso se describe aquí:http://zshwiki.org/home/zle/bindkeys
Respuesta2
Quería el mismo comportamiento para zsh con oh-my-zsh
el complemento instalado y encontrado history-substring-search
.
Logré el mismo comportamiento descrito anteriormente agregando el complemento a mi ~/.zshrc
:
plugins=(git brew npm history-substring-search)
Supongo que este complemento no existía cuando se planteó esta pregunta. Sólo una forma alternativa de lograr lo mismo.