зш, стрелка вверх повторяет только уникальные команды?

21

Я ищу настройку, которая сделает так, чтобы при нажатии на стрелку вверх zsh показывал команды, которые я недавно редактировал. Подвох в том, что я хочу только уникальные команды. В настоящее время, если я набираю echo "hello world"50 раз, мне нужно нажать стрелку вверх 50 раз, чтобы получить команду, которую я использовал, перед вводом команды echo. Это раздражает, если не сказать больше.

Любые мысли о том, какие настройки мне нужно включить / отключить?

Ли Олайвар
источник

Ответы:

23

HIST_IGNORE_ALL_DUPSвыбросит все предыдущие совпадения команды, что может привести к путанице при использовании истории в качестве журнала того, что вы сделали позже.

Пристальный подходит к вашим потребностям, вероятно, HIST_IGNORE_DUPSили даже HIST_FIND_NO_DUPSвариант.

Смотрите man zshoptions | less -p History:

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

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

HIST_IGNORE_DUPS: не вводите командные строки в список истории, если они являются дубликатами предыдущего события.

Peth
источник
1
HIST_FIND_NO_DUPS - лучший ответ, чем мой, я думаю.
Микель
3

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

Смотрите man zshoptionsподробности.

Mikel
источник
Прекрасно работает! Если я что-то упустил, это именно то, что я хотел :)
Ли Олайвар,