该Ctrl+R方法适用于 root(也适用),但是我找不到为什么它不适用于用户。
用户.zshrc
:
setopt AUTO_CD
setopt CORRECT_ALL
setopt EXTENDED_GLOB
# History
SAVEHIST=10000
HISTSIZE=10000
HISTFILE=~/.zsh/history
setopt APPEND_HISTORY
setopt EXTENDED_HISTORY
setopt INC_APPEND_HISTORY
setopt HIST_FIND_NO_DUPS
setopt HIST_IGNORE_ALL_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[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
setopt HASH_LIST_ALL
# MIME
autoload -U zsh-mime-setup
zsh-mime-setup
# Calc
autoload -U zcalc
# Login
alias su="su - toor"
与 root .zshrc 的差异:
--- - 2011-01-06 23:53:54.772440701 +0100
+++ .zshrc 2011-01-06 23:50:00.000000000 +0100
@@ -38,9 +38,5 @@
zsh-mime-setup
# Calc
autoload -U zcalc
-# Editor
-export EDITOR=vim
-# Paludis
-alias background="schedtool -B -e"
-alias lowprio="nice -n 20 ionice -c 3"
-alias blowprio="ionice -c 3 schedtool -B -e nice -n 20"
+# Login
+alias su="su - toor"
有任何想法吗?
zsh 版本 2.3.11。
答案1
如果您有$EDITOR = vi*
或VISUAL = vi*
当 zsh 启动时,zsh 使用 vi 插入模式作为默认键盘映射。否则 zsh 使用 emacs 模式。您可能在初始化文件中设置了EDITOR
(或VISUAL
) vim
,但在以 root 身份运行时没有这样的设置,因此您会看到 vi 模式映射,其中历史搜索处于打开状态^X r
和^X s
。
添加bindkey -e
到您的.zshrc
(或学习 vi 地图)。
像往常一样,这在文档(zshzle
手册页)中,但您必须知道您在寻找什么。