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

45

Je suis récemment passé à zsh, en utilisant robbyrusselloh-my-zsh . Avant cela, j’utilisais 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 commitpuis zsh passe par toutes les gitcommandes 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?

Patrick Oscity
la source
Étrange, j'utilise OMZSH et ça se comporte comme ça. Avez-vous 'plugins = (git)' dans votre zshrc?
Chris2048
oui, mais ce n'est pas seulement pour git, toutes les commandes sont complétées de cette façon.
Patrick Oscity
Sur Ubuntu, voir superuser.com/a/1490192/131522
mixel

Réponses:

66

J'ai trouvé la solution à mon problème dans la documentation ZSH . Oh-my-zsh semble mapper les touches et à 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-backwardas

Rechercher en arrière dans l'historique une ligne commençant par le premier mot de la mémoire 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-backwardest comme suit:

Recherche en avant dans l’historique d’une ligne commençant par la ligne courante jusqu’au curseur . Cela laisse le curseur dans sa position d'origine.

Aussi, si \e[Ane fonctionne pas pour les flèches haut ou bas, appuyez <ctrl-v><KEY (e.g., up arrow)>sur un autre terminal qui donne ^[OA. Ensuite, vous pouvez utiliser ceci au lieu de \e[A. Le processus est décrit ici: http://zshwiki.org/home/zle/bindkeys

Patrick Oscity
la source
1
Merci merci merci!! J'étais en train de devenir
dingue à
Pour les utilisateurs non-OMZ comme moi: bindkeyne fait rien de réel, à cause d'un bogue, l'équipe OMZ l'a corrigé avec ce plugin . Il suffit de le télécharger et de le rechercher avant bindkey.
Franklin Yu
@ FranklinYu vous réalisez que c'est total bs, non? ce plugin ne fait rien avec bindkey, sauf USE it pour capturer certains événements.
puce
Wow, c'est parfait!
Squirrel
12

Je voulais le même comportement pour zsh avec oh-my-zshplugin installé et trouvé 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.

Dusan
la source