Скопируйте и вставьте это на свой .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, но готово для копирования и вставки. Он перезаписывает клавиши курсора вверх и вниз. Я использовал эту запись списка рассылки .
Смотрите также:
${key[Up]}
. Затем (в режиме редактирования) введите Ctrl + V и стрелку вверх. Это должно вставить правильный код ключа. Сделайте то же самое для стрелки вниз.Ctrl+R
.Вы можете настроить специальный виджет zle для отображения только элементов локальной истории:
Предполагая, что ↑это связано с
up-line-or-history
(я думаю, что это по умолчанию), вы можете привязать этот виджет к другому нажатию клавиши, например CTRL+ ↑:Если это работает, вероятно, зависит от вашего терминала. Над линией работает в
URxvt/Screen
. Сxterm
тобой понадобитсядля CTRL+ ↑.
Другой вариант может быть
поэтому, если у вас включена локальная история, вы можете заглянуть в глобальную или наоборот.
источник
Ответ @ lumbic работал для меня только с несколькими изменениями:
Этот код устанавливает глобальную историю по умолчанию и использует стрелку CTRL для локальной истории.
Примечание: я использую zsh 5.0.2 вместе с oh-my-zsh.
источник
Ctrl+arrows
для местной истории.Я пробовал варианты, перечисленные в других ответах здесь, но я не был доволен ими. Виджеты 1
up-history
илиup-line-or-history
не включают начальный поиск, и виджет 1,up-line-or-beginning-search
кажется, не работает должным образом при изменении предпочтения локальной истории при его использовании. 2Итак, я пришел к следующим настройкам. Он позволяет Ctrl+ стрелками просматривать глобальную историю, Alt+ стрелками просматривать только локальную историю (аналогично Bash) и автономными стрелками для использования интеллектуального поиска в начале (по умолчанию в Oh My Zsh ).
1 Их
down
аналоги тоже подразумеваются неявно.2 Начало, используемое для поиска, переопределяется после изменения предпочтения локальной истории, поэтому вся первая найденная команда используется в качестве начала, которое нужно искать во втором поиске.
источник
Основываясь на различных ответах, я смог сделать сокращенную версию:
Эта версия перезапишет существующие
up-line-or-history
иdown-line-or-history
виджеты новыми пользовательскими виджетами. Этот виджет включает локальную историю и затем вызывает исходные виджеты, которые доступны под.
именами с префиксом. Подробности смотрите в документации по виджету zle .Это означает, что вы можете сохранить любые существующие сочетания клавиш. Поэтому вы можете избежать выяснения последовательности перехода для набора стрелки вверх в вашем текущем терминале.
источник
Выше ответ работал для меня.
Ссылка: https://coderwall.com/p/jpj_6q/zsh-better-history-searching-with-arrow-keys
источник