Zsh: стрелка вверх пропускает одинаковые команды

10

В большинстве оболочек Unix клавиша со стрелкой вверх заменяет команду, которая редактировалась предыдущей командой в истории. Историю можно увидеть с помощью команды history.

можно нажимать более одного раза, чтобы взобраться в историю.

Мой вопрос:

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

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

Я знаю, что это далеко не единственный совет, который увеличивает производительность оболочки.

бонус:

  • дайте конфигурацию, работающую для оболочки Bash.
  • сохранить историю (знание, что вы вводили команду много раз подряд, может быть полезным)
Габриэль Девиллерс
источник

Ответы:

15

Для zsh поместите это в вашу конфигурацию:

setopt histignoredups

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

Эквивалентное значение для bash:

HISTCONTROL=$HISTCONTROL:ignoredups
Мартин Сугиоарто
источник
1
спасибо, setopt histignoredupsделает работу, но также скрывает дубликаты из истории
Габриэль Девиллерс
Да, точно. В большинстве случаев это то, что вы хотите. Когда вы видели предложение и не хотите его, вы не хотите, чтобы это снова предложили. Это не удаляет дубликаты из истории, кстати.
Мартин Сугиоарто
Вы правы, но я имел в виду: будущие дубликаты не будут добавлены в историю.
Габриэль Девиллерс
Они добавляются, иначе другой вариант, histexpiredupsfirstкоторый я тоже использую, не имеет смысла. Это заставляет дубликаты истечь сначала прежде, чем смотреть на возраст. (Я говорю о Zsh здесь)
Мартин Сугиоарто