我无法让 zsh 历史键绑定按我想要的方式工作。我希望能够键入sudo
然后使用向上箭头滚动浏览带有前缀的所有历史命令sudo
。
我认为这应该是bindkey "^[[5~" up-line-or-history
。我有这个,lib/key-bindings.zsh
并且该文件应该是源文件。我正在使用一个基本未修改的安装哦我的天啊。
.zshrc
我在虚拟机上安装了我认为相同的lib 文件,历史记录按我想要的方式工作。虚拟机正在运行 zsh 4.3.10
,而我的另一台机器(不工作的那台)正在运行5.0.0
。这是版本问题吗?
答案1
看https://github.com/robbyrussell/oh-my-zsh/issues/1720
将其添加到 .zshrc 可以为我解决这个问题:
# start typing + [Up-Arrow] - fuzzy find history forward
if [[ "${terminfo[kcuu1]}" != "" ]]; then
autoload -U up-line-or-beginning-search
zle -N up-line-or-beginning-search
bindkey "${terminfo[kcuu1]}" up-line-or-beginning-search
fi
# start typing + [Down-Arrow] - fuzzy find history backward
if [[ "${terminfo[kcud1]}" != "" ]]; then
autoload -U down-line-or-beginning-search
zle -N down-line-or-beginning-search
bindkey "${terminfo[kcud1]}" down-line-or-beginning-search
fi
答案2
我不确定这是否从 4.3.10 更改为 5.0.0,但您正在搜索的小部件是history-search-backward
在最近的几个版本中调用的。
另外一个很好的键绑定是history-incremental-pattern-search-backward
您可以在其中输入(在调用该小部件后的特殊提示下),例如sudo*destdir
循环浏览以 开头sudo
和以 结尾的所有命令destdir
。
答案3
为了使其在 Ubuntu 上运行,请执行以下操作echo DEBIAN_PREVENT_KEYBOARD_CHANGES=yes>>~/.zshenv
。
答案4
在 ~/.zshrc 中更改export HISTSIZE=
为为我解决了这个问题。export HISTSIZE=999999999