zsh игнорирует HIST_FIND_NO_DUPS

zsh игнорирует HIST_FIND_NO_DUPS

Я пытаюсь настроить оболочку Z так, чтобы она не отображала дублирующиеся записи истории с помощью «setopt HIST_FIND_NO_DUPS».

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.

Однако это не работает ожидаемым образом. Когда у меня есть эта история:

    1  history
    2  cd /bin
    3  cd /bin
    4  cd /bin

Я ожидаю, что нажму UP дважды (что установлено на 'up-line-or-history') и получу 'history' в приглашении. Однако вместо этого я получаю 'cd /bin'. Если я нажму UP четыре раза, то перейду к команде 'history', что по сути является поведением по умолчанию без установленного HIST_FIND_NO_DUPS.

Я знаю, что можно использовать другие параметры, которые изначально предотвратят сохранение дублирующихся команд (например, HIST_IGNORE_ALL_DUPS), но это не то поведение, которое мне нужно.

решение1

HIST_FIND_NO_DUPS

Когдаидет поискдля записей истории в редакторе строк не отображать дубликаты ранее найденной строки, даже если дубликаты не являются смежными.

Я думаю, что это работает так, как задумано, и setopt HIST_FIND_NO_DUPSне должно влиять на результаты, когда вы просто нажимаете стрелку вверх. Это влияет на результаты поиска, отображаемые, когда вы нажимаете Ctrl-r. Предположим, у вас есть следующая история:

mvn clean package
mvn clean package
mvn clean package -DSkipTests
mvn clean package

Теперь, если вы нажмете Ctrl-rи наберете , mvnвы получите mvn clean packageпредложение. Когда вы нажмете Ctrl-rснова, вы получите mvn clean package -DSkipTests. Ctrl-rТретье нажатие не приведет к новому предложению, потому что дубликаты не допускаются HIST_FIND_NO_DUPS. Без HIST_FIND_NO_DUPSоболочки вам mvn clean packageснова будет показано.

Связанный контент