I'm looking for a setting that will make it so that when i hit the up arrow, zsh shows commands i have recently edited. The catch is, i only want unique commands. Currently, if i type echo "hello world" 50 times, i have to press up arrow 50 times to get the command i used before typing the echo command. This is annoying to say the least.

Any thoughts on what setting i need to enable/disable?


HIST_IGNORE_ALL_DUPS will throw out all previous matches of the command, which can be confusing when using the history as a log of what you did later.

A closer fit to your needs is probably the HIST_IGNORE_DUPS or even the HIST_FIND_NO_DUPS option.

See man zshoptions | less -p History:

HIST_FIND_NO_DUPS: When searching for history entries in the line editor, do not display duplicates of a line previously found, even if the duplicates are not contiguous.

HIST_IGNORE_ALL_DUPS: If a new command line being added to the history list duplicates an older one, the older command is removed from the list (even if it is not the previous event).

HIST_IGNORE_DUPS: Do not enter command lines into the history list if they are duplicates of the previous event.

  • 1
    HIST_FIND_NO_DUPS is a better answer than mine I think. – Mikel Apr 20 '11 at 21:27

I can't see any way to literally only do that, but if you set the HIST_IGNORE_ALL_DUPS option, only the most recent version of a command will be retained in history, giving you the same effect.

See man zshoptions for details.

  • Works great! Unless i am missing something, this is exactly what i wanted :) – Lee Olayvar Apr 20 '11 at 16:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.