zsh, la flèche vers le haut ne répète que des commandes uniques?

21

Je recherche un paramètre qui fera en sorte que lorsque je clique sur la flèche vers le haut, zsh affiche les commandes que j'ai récemment modifiées. Le hic, c'est que je veux seulement des commandes uniques . Actuellement, si je tape echo "hello world"50 fois, je dois appuyer sur la flèche vers le haut 50 fois pour obtenir la commande que j'ai utilisée avant de taper la commande echo. C'est énervant pour le moins.

Avez-vous des idées sur le paramètre dont j'ai besoin pour activer / désactiver?

Lee Olayvar
la source

Réponses:

23

HIST_IGNORE_ALL_DUPSsupprimera toutes les correspondances précédentes de la commande, ce qui peut être déroutant lorsque vous utilisez l'historique comme journal de ce que vous avez fait plus tard.

Un ajustement plus proche de vos besoins est probablement HIST_IGNORE_DUPSl' HIST_FIND_NO_DUPSoption ou même l' option.

Voir man zshoptions | less -p History:

HIST_FIND_NO_DUPS: lors de la recherche d'entrées d'historique dans l'éditeur de ligne, n'affichez pas les doublons d'une ligne trouvée précédemment, même si les doublons ne sont pas contigus.

HIST_IGNORE_ALL_DUPS: si une nouvelle ligne de commande ajoutée à la liste d'historique duplique une ancienne, l'ancienne commande est supprimée de la liste (même si ce n'est pas l'événement précédent).

HIST_IGNORE_DUPS: n'entrez pas de ligne de commande dans la liste d'historique s'il s'agit de doublons de l'événement précédent.

peth
la source
1
HIST_FIND_NO_DUPS est une meilleure réponse que la mienne je pense.
Mikel
3

Je ne vois aucun moyen de le faire littéralement, mais si vous définissez HIST_IGNORE_ALL_DUPS option, seule la version la plus récente d'une commande sera conservée dans l'historique, vous donnant le même effet.

Voir man zshoptionspour plus de détails.

Mikel
la source
Fonctionne très bien! À moins que je manque quelque chose, c'est exactement ce que je voulais :)
Lee Olayvar