web-dev-qa-db-fra.com

oh-my-zsh achèvement de l'histoire

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?

44
Patrick Oscity

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

65
Patrick Oscity

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.

12
dcusan