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

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

Недавно я перешел на zsh, используяробирасселoh-my-zshДо этого я использовал bash со множеством дополнительных функций, и мне не хватает только одной вещи, потому что zsh пытается быть «слишком умным»:

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

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

решение1

Я нашел решение своей проблемы вДокументация ЗШ. 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

решение2

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

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

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

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

Связанный контент