Нажмите на ссылку чтобы купить полистирол.

Zsh. Первый рецепт настройки: история команд

В секцию истории команд естественным образом попадают строки:

HISTFILE=~/.histfile
HISTSIZE=1000
SAVEHIST=1000

Кроме того, в неё же резонно перетащить опцию дополнения файла истории:

setopt appendhistory

Теперь внесём опции, избавляющие файл истории от "мусора" -- дубликатов команд:

setopt HIST_IGNORE_ALL_DUPS

пустых строк, возникающих после ошибочного нажатия Enter в "голом" приглашении:

setopt HIST_REDUCE_BLANKS

лишних пробелов в командной строке:

setopt HIST_IGNORE_SPACE

А вот установка опции

setopt INC_APPEND_HISTORY

напротив, обеспечивает инкрементное наполнение файла истории -- команды помещаются в него по мере их ввода и исполнения, а не по завершении сеанса.

Это очень полезно, если у нас открыто несколько терминальных окон или вкладок: в каждой из них, разумеется, запущен свой экземпляр шелла, но из них осуществляется общий доступ к истории команд.

Как говорилось в разделе про tcsh, этот шелл "из коробки" имеет очень полезную особенность: если в пустой командной строке набрать какой-либо символ и начать просматривать историю команд с помощью клавиш Up и Down, то из буфера будут извлекаться только те, имена которых начинаются с этого символа. Введение двух и более начальных символов ещё более сузит круг вывода.

Подобного поведения легко добиться и от zsh -- для этого достаточно определить две ключевые последовательности (keybindihgs):

bindkey "^[[A" up-line-or-search
bindkey "^[[B" down-line-or-search

ИМХО, это одно из величайших достижений, привнесённых в наш мир tcsh'ем, и отказываться от него не разумно.

. .