Estendendo a pesquisa de histórico em zsh

3

Como estender a pesquisa Ctrl + R em zsh? Não é possível encontrar a entrada apesar de estar no arquivo de histórico.

Editar: Meu .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 deve encontrar blowprio cave resolve -c world -C a -R w --resume-file resume-world , que está em .zsh/history (pelo menos grep diz isso), mas não encontra correspondência.

    
por Maciej Piechotka 12.09.2010 / 22:28

2 respostas

4

Você definiu SAVEHIST=10000 , mas deixou HISTSIZE em seu valor padrão de 30. Isso significa que qualquer sessão manterá no máximo 30 entradas na memória. Devido à opção append_history , o arquivo de histórico pode conter mais histórico do que mantido na memória. Se a entrada que você está procurando não estiver na memória, ela não será encontrada.

Correção fácil: defina SAVEHIST como maior. Na maioria das vezes, SAVEHIST e HISTSIZE devem ter o mesmo valor.

Se você está com falta de memória, suponho que faça sentido manter menos entradas na memória e carregá-las apenas quando você as pesquisar. Mas isso soa como muito esforço de codificação para um benefício bastante pequeno (10000 entradas seriam algo como um megabyte, que é grande para uma instância de shell, mas não fora de questão).

Você obterá uma milhagem melhor de suas entradas de histórico com a opção hist_ignore_all_dups (em vez de hist_find_no_dups ).

    
por 12.09.2010 / 23:49
0

Eu não acho que é possível "estender" essa pesquisa.

Em uma configuração padrão, Ctrl + R é mapeado para uma função interna do ZSH Line Edtior ( zle ): history-incremental-search-backward

Veja Controle de histórico na página do ZSH .

Parece que não há possibilidades de "estender" essa função.

Qual é a entrada que não foi encontrada? Algum exemplo?

    
por 12.09.2010 / 23:07