о-о-о-о-завершение истории

45

Я недавно переключился на Zshoh-my-zsh , используя robbyrussell's . До этого я использовал bash с большим количеством пользовательских вещей, и мне не хватает только одного, потому что zsh пытается быть «слишком умным»:

Если я наберу, git commitа затем Zsh проходит через все последние gitкоманды. Хотя я действительно хочу пройти через все команды, которые начинаются с git commit(не только git).

Как я могу добиться такого поведения в (о-о-) Zsh?

Патрик Осцити
источник
Странно, я использую OMZSH, и он ведет себя так. У вас есть 'plugins = (git)' в вашем zshrc?
Chris2048
да, я делаю, но это не только для git, все команды выполняются таким образом.
Патрик Осцити
На Ubuntu смотрите superuser.com/a/1490192/131522
миксель

Ответы:

66

Я нашел решение моей проблемы в документации ZSH . Oh-my-zsh, кажется, отображает и ключи на что-то вроде

bindkey '\e[A' history-search-backward
bindkey '\e[B' history-search-forward

Что дает точное поведение, которое я описал выше. Документация ZSH описывает поведение history-search-backwardкак

Поиск в истории назад для строки, начинающейся с первого слова в буфере .



Вместо этого я хотел следующее отображение, которое я вставил в свой ~/.zshrc:

bindkey '\e[A' history-beginning-search-backward
bindkey '\e[B' history-beginning-search-forward

Поведение history-beginning-search-backwardвыглядит следующим образом:

Поиск вперед в истории для строки, начинающейся с текущей строки до курсора . Это оставляет курсор в исходном положении.

Кроме того, если \e[Aне работает стрелка вверх или вниз, нажмите <ctrl-v><KEY (e.g., up arrow)>на другой терминал, который дает ^[OA. Тогда вы можете использовать это вместо \e[A. Процесс описан здесь: http://zshwiki.org/home/zle/bindkeys

Патрик Осцити
источник
1
Спасибо Спасибо спасибо!! Я
сходил с
Для пользователей, не являющихся пользователями OMZ, таких как я: bindkeyиз-за ошибки ничего не происходит, поэтому команда OMZ исправила это с помощью этого плагина . Просто скачайте его и поставьте перед этим bindkey.
Франклин Ю
@FranklinYu ты понимаешь, что это полный бс, верно? этот плагин ничего не делает с bindkey, кроме как использовать его для отлова некоторых событий.
nonchip
Вау, это прекрасно!
Белка
12

Я хотел того же поведения для Zsh с oh-my-zshустановленным и найденным плагином history-substring-search.

Я достиг того же поведения, описанного выше, добавив плагин к моему ~/.zshrc:

plugins=(git brew npm history-substring-search)

Я думаю, что этот плагин не существовал еще тогда, когда этот вопрос был поднят. Просто альтернативный способ добиться того же.

dcusan
источник