Скопируйте и вставьте это на свой .zshrc
:
Курсоры используют местную историю:
bindkey "${key[Up]}" up-line-or-local-history
bindkey "${key[Down]}" down-line-or-local-history
up-line-or-local-history() {
zle set-local-history 1
zle up-line-or-history
zle set-local-history 0
}
zle -N up-line-or-local-history
down-line-or-local-history() {
zle set-local-history 1
zle down-line-or-history
zle set-local-history 0
}
zle -N down-line-or-local-history
Если вам нужны также привязки клавиш ( CTRL+ курсоры) для перехода по глобальной истории, добавьте также это в ваш .zshrc
:
bindkey "^[[1;5A" up-line-or-history # [CTRL] + Cursor up
bindkey "^[[1;5B" down-line-or-history # [CTRL] + Cursor down
Чтобы это работало, необходимо включить опцию SHARE_HISTORY (см. 16.2.4 История ). Запустите setopt
и проверьте, есть ли в списке «sharehistory». Если не добавить setopt sharehistory
к вашему .zshrc
. Тогда можно использовать set-local-history, как мы делали выше. Документация гласит:
По умолчанию команды перемещения по истории посещают импортированные и локальные линии, но вы можете включать и выключать их с помощью привязки zle set-local-history. Также возможно создать виджет zle, который заставит некоторые команды игнорировать импортированные команды, а некоторые включают их.
Обратите внимание, что по умолчанию используется глобальная история (и все функции заканчиваются на «zle set-local-history 0», т.е. локальная история отключена). Таким образом, нажатие CTRL+ Rбудет искать глобальную историю по умолчанию (что имеет смысл в большинстве случаев).
Это очень похоже на решение @mpy, но готово для копирования и вставки. Он перезаписывает клавиши курсора вверх и вниз. Я использовал эту запись списка рассылки .
Смотрите также: