finalización del historial de oh-my-zsh

45

Recientemente he cambiado a zsh, usando robbyrussell'soh-my-zsh . Antes de eso, usaba bash con muchas cosas personalizadas y solo me faltaba una cosa porque zsh está tratando de ser 'demasiado inteligente':

Si escribo git commity luego zsh pasa por todos los gitcomandos recientes . Sin embargo, lo que realmente quiero es pasar por todos los comandos que comienzan con git commit(no solo git).

¿Cómo puedo lograr este comportamiento en (oh-my-) zsh?

Patrick Oscity
fuente
Extraño, uso OMZSH y se comporta así. ¿Tiene 'plugins = (git)' en su zshrc?
Chris2048
sí, pero no es solo para git, todos los comandos se completan de esta manera.
Patrick Oscity
En Ubuntu ver superuser.com/a/1490192/131522
Mixel

Respuestas:

66

He encontrado la solución a mi problema en la documentación de ZSH . Oh-my-zsh parece mapear las teclas 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-backwardtan

Busque hacia atrás en el historial una línea que comience con la primera palabra en el búfer .



En cambio, lo que quería era la siguiente asignación, 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-backwardes el siguiente:

Busque en el historial una línea que comience con la línea actual hasta el cursor . Esto deja el cursor en su posición original.

Además, si \e[Ano funciona para las flechas hacia arriba o hacia abajo, presione <ctrl-v><KEY (e.g., up arrow)>en otra terminal que da ^[OA. Entonces puedes usar esto en lugar de \e[A. El proceso se describe aquí: http://zshwiki.org/home/zle/bindkeys

Patrick Oscity
fuente
1
¡¡Gracias, gracias, gracias!! Me estaba volviendo loco por esto
mhenrixon
Para usuarios que no son OMZ como yo: bindkeyno hace nada real debido a un error, por lo que el equipo de OMZ lo parchó con este complemento . Simplemente descárguelo y búsquelo antes bindkey.
Franklin Yu
@FranklinYu te das cuenta de que es un total bs, ¿verdad? ese complemento no hace nada con bindkey excepto USARLO para capturar algunos eventos.
nonchip
Wow, esto es perfecto!
Ardilla
12

Quería el mismo comportamiento para zsh con el oh-my-zshcomplemento instalado y encontrado history-substring-search.

Logré el mismo comportamiento descrito anteriormente al agregar el complemento a mi ~/.zshrc:

plugins=(git brew npm history-substring-search)

Supongo que este complemento no existía cuando surgió esta pregunta. Solo una forma alternativa de lograr lo mismo.

dcusan
fuente