Расширение поиска истории в zsh

Как расширить поиск Ctrl + R в zsh? Он не может найти вход, несмотря на то, что он находится в файле истории.

Изменить: My .zshrc :

 setopt AUTO_CD setopt CORRECT_ALL setopt EXTENDED_GLOB # History SAVEHIST=10000 HISTFILE=~/.zsh/history setopt APPEND_HISTORY setopt EXTENDED_HISTORY setopt INC_APPEND_HISTORY setopt HIST_FIND_NO_DUPS setopt HIST_IGNORE_SPACE setopt NO_HIST_BEEP setopt SHARE_HISTORY # Keys autoload zkbd [[ ! -d ~/.zkbd ]] && mkdir ~/.zkbd [[ ! -f ~/.zkbd/$TERM-${DISPLAY:-$VENDOR-$OSTYPE} ]] && zkbd source ~/.zkbd/$TERM-${DISPLAY:-$VENDOR-$OSTYPE} [[ -n ${key[Home]} ]] && bindkey "${key[Home]}" beginning-of-line [[ -n ${key[End]} ]] && bindkey "${key[End]}" end-of-line [[ -n ${key[Insert]} ]] && bindkey "${key[Insert]}" overwrite-mode [[ -n ${key[End]} ]] && bindkey "${key[End]}" end-of-line [[ -n ${key[Insert]} ]] && bindkey "${key[Insert]}" overwrite-mode [[ -n ${key[Delete]} ]] && bindkey "${key[Delete]}" delete-char [[ -n ${key[Up]} ]] && bindkey "${key[Up]}" up-line-or-history [[ -n ${key[Down]} ]] && bindkey "${key[Down]}" down-line-or-history [[ -n ${key[Left]} ]] && bindkey "${key[Left]}" backward-char [[ -n ${key[Right]} ]] && bindkey "${key[Right]}" forward-char # Auto completion autoload -U compinit promptinit compinit promptinit prompt clint zstyle ':completion::complete:*' use-cache 1 # MIME autoload -U zsh-mime-setup zsh-mime-setup # Calc autoload -U zcalc # Editor export EDITOR=vim # Useful alias background="schedtool -B -e" alias lowprio="nice -n 20 ionice -c 3" alias blowprio="ionice -c 3 schedtool -B -e nice -n 20" 

cave resolve -c должен найти blowprio cave resolve -c world -C a -R w --resume-file resume-world который находится в .zsh/history (по крайней мере, grep говорит так), но не находит совпадения.

Вы установили SAVEHIST=10000 , но вы оставили HISTSIZE со значением по умолчанию 30. Это означает, что любой сеанс будет содержать не более 30 записей в памяти. Из-за опции append_history файл истории может содержать больше истории, чем храниться в памяти. Если запись, которую вы ищете, отсутствует в памяти, она не будет найдена.

Простое исправление: установите SAVEHIST больше. В большинстве случаев SAVEHIST и HISTSIZE должны быть одинаковыми.

Если у вас очень мало памяти, я полагаю, что имеет смысл хранить меньше записей в памяти и загружать их только при их поиске. Но это звучит как много усилий по кодированию для небольшого преимущества (10000 записей будут чем-то вроде мегабайта, который является большим для экземпляра оболочки, но не может быть и речи).

Вы получите лучший пробег из своих записей истории с опцией hist_ignore_all_dups (вместо hist_find_no_dups ).

Я не думаю, что можно «расширить» этот поиск.

В конфигурации по умолчанию Ctrl + R отображается на встроенную функцию ZSH Line Edtior ( zle ): history-incremental-search-backward

См. Раздел « Управление историей» на странице «Руководство пользователя ZSH» .

Кажется, что нет возможности «расширить» эту функцию.

Какая запись не найдена? Любые примеры?