Вы можете использовать функциональность zlehistory-search
:
bindkey "^[[A" history-beginning-search-backward
bindkey "^[[B" history-beginning-search-forward
Это связывает Upи Down(с учетом ваших собственных escape-последовательностей) поиск в истории, вперед и назад, на основе того, что уже было введено в приглашении.
Таким образом, если вы введете «vim» и нажмете Up, zsh будет перемещаться назад по вашей истории только для тех команд, которые начинаются с «vim».
Кроме того, вы можете поместить курсор в конец строки после того, как вы выбрали нужную команду из истории zsh, используя функцию history-search-end (обычно расположенную в /usr/share/zsh/functions/Zle/
) и добавляя -end
в конец каждой строки, например, так:
autoload -U history-search-end
zle -N history-beginning-search-backward-end history-search-end
zle -N history-beginning-search-forward-end history-search-end
bindkey "^[[A" history-beginning-search-backward-end
bindkey "^[[B" history-beginning-search-forward-end
Еще одна полезная опция
history | grep
Назначьте псевдоним, например
затем вы можете набрать
hg whatever
для поиска команд, которые вы использовали, например,Я поместил этот псевдоним в мои точечные файлы.
источник
hg
напоминает мне о ... О да, Mercurial!Если вы используете oh-my-zsh , добавьте
history-substring-search
вplugins=(...)
строку.Затем добавьте
где-то ниже строки, которая читается
source $ZSH/oh-my-zsh.sh
. Сохраните и запустите новый терминал или запуститеsource ~/.zshrc
текущий терминал.Примечание:
^[[A
последовательность перехода для стрелки вверх в терминале, который я использую (котенок) и многие другие. Чтобы проверить выбранный вами терминал, введите,showkey -a
а затем нажмите клавишу, для которой вы хотите найти escape-последовательность.источник
brew install zsh-history-substring-search
проверил readme репозитория для инструкций, я просто продолжу и создаю ответ, я действительно доволен результатом.Возможно, вы захотите использовать скрипт по адресу https://github.com/zsh-users/zsh-history-substring-search
Где вы можете ввести в любой части любой ранее введенной команды и нажмите Upи Downклавиши для переключения между командами согласования.
источник
Я очень рекомендую использовать
"$terminfo[kcuu1]"
или"$key[Up]"
вместо жестко запрограммированных вещей,"^[[A"
которые могут работать или не работать в любой конкретной системе.Проверьте
/etc/zsh/zshrc
больше ключей. Вот как это выглядит в моей системе. Я думаю, чтоterminfo
ключи, скорее всего, будут определены.источник
Как насчет использования
zsh-autosuggestions
?Дело в том, что для каждой команды, которую вы вводите, этот плагин будет показывать вам некоторые предложения, которые могут быть приняты или нет. Попробуйте и дайте нам обратную связь.
Без плагинов мы можем нажать, Ctrlrчтобы выполнить обратный поиск в истории, как только вы начнете вводить соответствующие команды, появятся в качестве подсказок.
источник
Я использую плагин vi-mode . И тогда в моем ~ / .zshrc у меня есть следующие привязки:
Это позволяет мне использовать
^P
и^N
как обычный поиск вперед и назад, если я не ввожу никакой текст, и как поиск с фильтрацией, если я делаю.источник
Я согласен с cheflo, что поиск по "подстроке" более полезен. Я не могу комментировать там, поэтому я начал новый ответ. Я использую oh-my-zsh и добавляю "history-substring-search" к плагинам = (...) ~ / .zshrc. Тогда источник ~ / .zshrc. Не нужно ничего больше добавлять. Используйте «bindkey» для проверки:
Позже вы вводите «до» и стрелку вверх, появляется «история» и подсвечивается «до» (если вы ранее использовали команду «история»).
источник
Вместо этого вы могли бы использовать zaw , который полностью заменяет ваш поиск гораздо лучшим супер-поиском с несколькими ключевыми словами, а также решает вашу проблему - история поиска - это только одна из вещей, которые может искать zaw.
Небольшое вступление / обсуждение здесь
источник
Поскольку я использую oh-my-zsh и использую решение подстроки из joelostblom, Джеймс, я изменяю .zshrc следующим образом: (который в строке 13 находит строку «source $ ZSH / oh-my-zsh.sh» , затем измените код вокруг него.)
источник
bindkey -v
сломается ctrl-a, ctrl-e. Скорее всего, все команды Ctrl.Ответ не о-о-о-о
Это сработало для меня (на macOS), чтобы получить доступ к истории подстрок через стрелки вверх / вниз. Связывание ключей зависит от вас.
История поиска по подстроке лучше, чем просто доступ к командам, начинающимся со строки. В большинстве случаев это больше похоже на ctrl-r, без глобусов и регулярных выражений.
Начиная с инструкций в zsh-users / zsh-history-substring-search
Теперь наслаждаюсь этим полностью.
источник