Je suis récemment passé à zsh, en utilisant oh-my-zsh
de robbyrussell . Avant cela, j'ai utilisé bash avec beaucoup de choses personnalisées et il ne me manque qu'une chose car zsh essaie d'être "trop intelligent":
Si je tape git commit
puis ↑ zsh parcourt toutes les commandes git
récentes. Ce que je veux vraiment, c’est de passer en revue toutes les commandes qui commencent par git commit
(pas seulement git
).
Comment puis-je obtenir ce comportement dans (oh-my-) zsh?
J'ai trouvé la solution à mon problème dans le documentation ZSH . Oh-mon-zsh semble cartographier le ↑ et ↓ Des clés pour quelque chose comme
bindkey '\e[A' history-search-backward
bindkey '\e[B' history-search-forward
Ce qui donne le comportement exact que j'ai décrit ci-dessus. La documentation ZSH décrit le comportement de history-search-backward
en tant que
Recherche en arrière dans l'historique une ligne commençant par le premier mot du tampon .
Ce que je voulais à la place, c'était le mappage suivant, que j'ai inséré dans mon ~/.zshrc
:
bindkey '\e[A' history-beginning-search-backward
bindkey '\e[B' history-beginning-search-forward
Le comportement de history-beginning-search-backward
est le suivant:
Recherchez dans l’historique une ligne commençant par la ligne actuelle jusqu’au curseur . Cela laisse le curseur dans sa position d'origine.
De même, si \e[A
ne fonctionne pas pour les flèches vers le haut ou vers le bas, appuyez sur <ctrl-v><KEY (e.g., up arrow)>
dans un autre terminal donnant ^[OA
. Ensuite, vous pouvez utiliser ceci à la place de \e[A
. Le processus est décrit ici: http://zshwiki.org/home/zle/bindkeys
Je voulais le même comportement pour zsh avec oh-my-zsh
installé et trouvé le plugin history-substring-search
.
J'ai obtenu le même comportement que décrit ci-dessus en ajoutant le plugin à mon ~/.zshrc
:
plugins=(git brew npm history-substring-search)
Je suppose que ce plugin n'existait pas à l'époque où cette question a été posée. Juste un autre moyen de réaliser la même chose.