it-mure.jp.net

zshでの履歴検索の拡張

拡張する方法 Ctrl+R zshで検索しますか?履歴ファイルにあるのにエントリが見つかりません。

編集:私の.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 -cblowprio cave resolve -c world -C a -R w --resume-file resume-worldにある.zsh/historyを見つける必要がありますが(少なくともgrepはそう言っています)、一致するものは見つかりません。

3

SAVEHIST=10000を設定しましたが、HISTSIZEをデフォルト値の30のままにしました。つまり、どのセッションでも最大30のエントリがメモリに保持されます。 append_historyオプションにより、履歴ファイルにはメモリに保持されるよりも多くの履歴が含まれる可能性があります。検索しているエントリがメモリにない場合、そのエントリは見つかりません。

簡単な修正:SAVEHISTを大きく設定します。ほとんどの場合、SAVEHISTHISTSIZEは同じ値である必要があります。

メモリが極端に不足している場合は、メモリに保持するエントリを少なくして、検索するときにのみロードするのが理にかなっていると思います。しかし、それはかなり小さな利益のために多くのコーディング努力のように聞こえます(10000エントリはメガバイトのようなものであり、シェルインスタンスにとっては大きいですが、問題外ではありません)。

hist_ignore_all_dupsの代わりに)hist_find_no_dupsオプションを使用すると、履歴エントリからより良いマイレージを得ることができます。

この検索を「拡張」することは不可能だと思います。

デフォルト構成の場合 Ctrl+R ZSH Line Edtior(zle)の組み込み関数にマップされます:history-incremental-search-backward

ZSHマンページの履歴制御 を参照してください。

この機能を「拡張」する可能性はないようです。

見つからないエントリは何ですか?例はありますか?

0
echox