Closed wongsyrone closed 9 years ago
关于历史记录,zsh 有很多选项。我的配置是: 1 2 3 4 5 6 7 8 9 10 11
HISTFILE=~/.histfile HISTSIZE=10000 SAVEHIST=10000
setopt hist_ignore_all_dups
setopt hist_ignore_space
setopt hist_fcntl_lock 2>/dev/null setopt hist_reduce_blanks
最多保留一万行不重复的历史记录。对其的读取和保存没做额外的配置,因此 zsh 会在启动时读取一次,在退出时保存一次。这样,如果同时开了多个 zsh,它们不会共享启动后的历史记录项,因为还没有写到文件中去。
其实是有选项来方便在多个 zsh 中及时共享历史记录的: 1
setopt SHARE_HISTORY
但是这样的话,每次显示提示符时 zsh 均会读取一次历史记录,而每当新的历史记录产生时 zsh 都会写入一次。磁盘 I/O 太频繁了,我不喜欢。我只需要在我想的时候,能够手动保存和读取历史记录就可以了。读过长长的文档,发现fc可以做到这点: 1 2 3 4
fc -IR
fc -IA
-I表示「incremental」,只有新的项目被处理。-R是读取,而-A是写入。千万不要用-IW,这样会丢失原有的历史记录。