Я пытаюсь настроить оболочку 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
снова будет показано.