Vous pouvez utiliser leshistory-search
fonctionnalités de zle :
bindkey "^[[A" history-beginning-search-backward
bindkey "^[[B" history-beginning-search-forward
Cela lie Upet Down(ajustez pour vos propres séquences d'échappement) à une recherche historique, en arrière et en avant, en fonction de ce qui a déjà été saisi à l'invite.
Donc, si vous deviez entrer "vim" et taper Up, zsh reviendra en arrière dans votre historique pour seulement les commandes commençant par "vim".
Vous pouvez également placer le curseur à la fin de la ligne une fois que vous avez sélectionné la commande souhaitée dans l'historique de zsh en utilisant la fonction history-search-end (située généralement dans /usr/share/zsh/functions/Zle/
) et en ajoutant -end
à la fin de chaque ligne, comme suit:
autoload -U history-search-end
zle -N history-beginning-search-backward-end history-search-end
zle -N history-beginning-search-forward-end history-search-end
bindkey "^[[A" history-beginning-search-backward-end
bindkey "^[[B" history-beginning-search-forward-end
Une autre option utile est
history | grep
Attribuer un alias, par exemple
alors vous pouvez taper
hg whatever
pour rechercher les commandes que vous avez utilisées, par exempleJe mets cet alias dans mes fichiers de points.
la source
hg
me rappelle ... Oh ouais, Mercurial!Si vous utilisez oh-my-zsh , ajoutez-le
history-substring-search
à laplugins=(...)
ligne.Puis ajouter
quelque part en dessous de la ligne qui a lu
source $ZSH/oh-my-zsh.sh
. Enregistrez et démarrez un nouveau terminal ou exécutez-lesource ~/.zshrc
dans le terminal actuel.Remarque:
^[[A
est la séquence d'échappement pour la flèche vers le haut dans le terminal que j'utilise (chat) et beaucoup d'autres. Pour enregistrer le terminal de votre choix, tapezshowkey -a
-le puis appuyez sur la touche pour laquelle vous souhaitez rechercher la séquence d'échappement.la source
brew install zsh-history-substring-search
vérifié les instructions dans le fichier Lisez-moi pour le repo, je vais continuer et créer une réponse. Je suis vraiment satisfait du résultat.Vous voudrez peut-être utiliser le script à l' adresse https://github.com/zsh-users/zsh-history-substring-search
Où vous pouvez taper n'importe quelle partie d'une commande précédemment entrée et appuyer sur les touches Upet Downpour parcourir les commandes correspondantes.
la source
Je recommande fortement d'utiliser
"$terminfo[kcuu1]"
ou"$key[Up]"
plutôt des éléments codés en dur, tels"^[[A"
que ceux qui peuvent ou ne peuvent pas fonctionner sur un système particulier.Départ
/etc/zsh/zshrc
pour plus de clés. Voici à quoi cela ressemble sur mon système. Je pense que lesterminfo
clés sont plus susceptibles d'être définies.la source
Qu'en est-il d'utiliser
zsh-autosuggestions
?Le fait est que, pour chaque commande que vous tapez, ce plugin vous montrera des suggestions qui pourraient être acceptées ou non. Essayez-le et donnez-nous des commentaires.
En l'absence de plug-ins, nous pouvons appuyer sur Ctrlrpour effectuer une recherche inversée dans l'historique. Dès que vous commencez à saisir les commandes correspondantes, elles apparaissent sous forme de suggestions.
la source
J'utilise le plugin vi-mode . Et puis dans mon ~ / .zshrc, j'ai les liaisons suivantes:
Cela me permet d’utiliser la
^P
et^N
comme recherche normale en arrière si je ne saisis pas de texte et comme recherche filtrée si je le fais.la source
Je suis d'accord avec cheflo que la recherche "sous-chaîne" est plus utile. Je ne peux pas commenter là-bas alors j'ai commencé une nouvelle réponse. J'utilise oh-my-zsh et j'ajoute "history-substring-search" aux plugins = (...) de ~ / .zshrc. Puis source ~ / .zshrc. Vous n'avez rien à ajouter. Utilisez "bindkey" pour vérifier:
Plus tard, vous tapez "to" et la flèche vers le haut, "history" apparaîtra et "to" sera en surbrillance (si vous avez utilisé la commande "history" auparavant).
la source
Vous pouvez également utiliser zaw , qui remplace complètement votre recherche par une meilleure recherche sur plusieurs mots clés et corrige votre problème. L'historique de la recherche n'est qu'un des éléments que zaw peut rechercher.
Petite introduction / discussion ici
la source
Parce que j'utilise oh-my-zsh et la solution de sous-chaîne de joelostblom, James, je modifie le .zshrc comme ceci: (qui, à la ligne 13, trouve la ligne "source $ ZSH / oh-my-zsh.sh" puis modifiez le code autour de lui.)
la source
bindkey -v
va casser ctrl-a, ctrl-e. Très probablement toutes les commandes ctrl.Réponse Non-Oh-My-Zsh
Cela a fonctionné pour moi (sur macOS) pour obtenir l'historique des sous-chaînes facilement accessible via les flèches haut / bas. La liaison de clé est à vous.
L’historique de recherche de sous-chaîne est préférable au simple accès à des commandes commençant par une chaîne. Cela ressemble plus à ctrl-r dans la plupart des cas, ceux sans globs ni correspondance de regex.
À partir des instructions de zsh-users / zsh-history-substring-search
Maintenant, profitant de cela à fond.
la source