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?


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

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


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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.