![扩展 zsh 中的历史搜索](https://linux22.com/image/436/%E6%89%A9%E5%B1%95%20zsh%20%E4%B8%AD%E7%9A%84%E5%8E%86%E5%8F%B2%E6%90%9C%E7%B4%A2.png)
如何扩展Ctrl+Rzsh 中的搜索?尽管它位于历史文件中,但它找不到条目。
编辑:我的.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
这么说)但是它没有找到匹配项。
答案1
您已经设置了SAVEHIST=10000
,但保留了HISTSIZE
默认值 30。这意味着任何会话最多会在内存中保留 30 个条目。由于该append_history
选项,历史文件可以包含比内存中保存的更多的历史记录。如果您要搜索的条目不在内存中,则不会找到它。
简单修复:设置SAVEHIST
更大。大多数时候SAVEHIST
和HISTSIZE
应该是相同的值。
如果您的内存非常不足,我认为在内存中保留较少的条目并仅在搜索它们时才加载它们是有意义的。但这听起来像是为了一个相当小的好处而进行了大量的编码工作(10000 个条目大约是 1 MB,这对于 shell 实例来说很大,但并非不可能)。
hist_ignore_all_dups
使用该选项(而不是) ,您可以从历史条目中获得更好的里程hist_find_no_dups
。
答案2
我认为不可能“扩展”这种搜索。
在默认配置中Ctrl+R映射到 ZSH Line Edtior 的内置功能(兹勒):history-incremental-search-backward
似乎没有可能“扩展”这个功能。
未找到的条目是什么?有什么例子吗?