zsh 历史向上箭头历史完成不起作用

zsh 历史向上箭头历史完成不起作用

我无法让 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

相关内容