Задать вопрос
Talifero
@Talifero

Как настроить поиск по истории команд в ZSH?

Когда то нашел zshrc в сети, там был реализован фильтр по истории команд, например:
talifero-HP% apt (дальше стрелочками вверх вниз )
talifero-HP% apt-get install network-manager-openvpn
talifero-HP% apt-get purge mc
talifero-HP% apt-get install ssh

То-есть из истории выводит только те команды что начинаются с apt.
В общем zshrc затерся, я все восстановил кроме этой функции. Помогите плиз!!
  • Вопрос задан
  • 1596 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
Talifero
@Talifero Автор вопроса
Вот так работает:
setopt appendhistory
setopt HIST_IGNORE_ALL_DUPS
setopt HIST_REDUCE_BLANKS
setopt HIST_IGNORE_SPACE

setopt INC_APPEND_HISTORY

bindkey '^[OA' history-beginning-search-backward
bindkey '^[OB' history-beginning-search-forward

setopt autocd

autoload -Uz compinit
compinit

setopt extendedglob nomatch notify

zstyle ':completion:*' completer _expand _complete _ignored _correct _approximate
zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS}
zstyle ':completion:*' use-compctl false
zstyle :compinstall filename '/home/zsh/.zshrc'

zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}'

setopt correctall
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
RicoX
@RicoX
Ушел на http://ru.stackoverflow.com/
Попробуйте так:
bindkey '^[[A' up-line-or-search                # up arrow for back-history-search
bindkey '^[[B' down-line-or-search              # down arrow for fwd-history-search


А вообще по работе с историей, лично я пользуюсь еще этим:
HISTFILE=~/.zhistory
## Число команд, сохраняемых в HISTFILE
SAVEHIST=5000
## Чucлo команд, coxpaняeмыx в сеансе
HISTSIZE=5000
DIRSTACKSIZE=20
# Опции истории команд
#Добавляет в историю время выполнения команды.
setopt extended_history
alias history='fc -il 1'

#История становится общей между всеми сессиями / терминалами.
setopt share_history

# Дополнение файла истрии
setopt  APPEND_HISTORY

#Добавить команду в историю не после выполнения а перед
setopt INC_APPEND_HISTORY

# Игнopupoвaть вce пoвтopeнuя команд
setopt  HIST_IGNORE_ALL_DUPS

# Удалять из файл истории пустые строки
setopt  HIST_REDUCE_BLANKS

# команды «history» и «fc» в историю заноситься не будут
setopt HIST_NO_STORE
Ответ написан
Комментировать
У меня решение Сергея не работает, сделал так:
typeset -A key
if [[ "$TERM" != emacs ]]; then
[[ -z "$terminfo[kcuu1]" ]] || bindkey -M viins "$terminfo[kcuu1]" up-line-or-search
[[ -z "$terminfo[kcud1]" ]] || bindkey -M viins "$terminfo[kcud1]" down-line-or-search
fi
function zle-line-init () { echoti smkx }
function zle-line-finish () { echoti rmkx }
zle -N zle-line-init
zle -N zle-line-finish
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы