zsh history up arrow завершение истории не работает
Я не могу заставить привязки истории Zsh работать так, как мне бы хотелось. Я хотел бы иметь возможность печатать sudo
а затем используйте стрелку вверх для прокрутки всех команд истории с префиксом sudo
,
Я считаю, что это должно быть bindkey "^[[5~" up-line-or-history
, У меня есть это в lib/key-bindings.zsh
и этот файл должен быть получен. Я использую практически неизмененную установку oh-my-zsh.
У меня есть то, что я думаю, то же самое .zshrc
и lib файлы на ВМ и история работает как я хочу. ВМ работает Zsh 4.3.10
в то время как моя другая машина (та, которая не работает) включена 5.0.0
, Это проблема версии?
5 ответов
См. 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
Я не уверен, изменилось ли это с 4.3.10 до 5.0.0, но вызванный вами виджет называется history-search-backward
в последних нескольких выпусках.
Также хорошая связка ключей history-incremental-pattern-search-backward
где вы можете ввести (в специальном приглашении после вызова этого виджета), например, sudo*destdir
циклически проходить все команды, начиная с sudo
и заканчивая destdir
,
В моем случае ошибка заключалась в том, что я копировал следующие переменные среды из bash в zsh:
# History modifications
export HISTTIMEFORMAT="%y-%m-%d %T "
export HISTSIZE=-1
export HISTFILESIZE=-1
Удаление тех, что в zsh, помогло.
Чтобы это работало на Ubuntu, сделайте echo DEBIAN_PREVENT_KEYBOARD_CHANGES=yes>>~/.zshenv
,
Изменениеexport HISTSIZE=
кexport HISTSIZE=999999999
в ~/.zshrc решил проблему для меня.