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'ем, и отказываться от него не разумно.
. .