Конечно, вы больше не можете использовать Ctrl+R. Если вы обратитесь к руководству по Z Shell, то увидите, что в таблице ключей history-incremental-search-backward
есть только привязка клавиш для виджета emacs
. Для него нет привязок клавиш в сочетаниях клавиш vi.
Но, как вы также узнаете из чтения руководства (это глава 18.), добавление привязки клавиш является довольно простым упражнением при использовании команды bindkey
:
bindkey "^R" history-incremental-search-backward
Вам даже не нужно использовать команду zle
для сопоставления виджета с функцией оболочки, так как это стандартный виджет.
Если вы обратитесь к ответу на этот же вопрос, который есть в вики Z Shell, вы увидите команды для конкретного добавления этого в комбинации клавиш vi "command" и "insert mode":
bindkey -M viins '^R' history-incremental-search-backward
bindkey -M vicmd '^R' history-incremental-search-backward
Также обратите внимание, что, как указывает garyjohn, в ключевой карте vi "команда" символ / связан с виджетом vi-history-search-backward
. Разница между этим виджетом и виджетом history-incremental-search-backward
заключается в поведении виджета, которое применяется, когда один находится в режиме поиска истории. Вот пара различий, которые вы заметите:
- Переключение режимов vi:
- Режим поиска в
history-incremental-search-backward
переключается между main
и vicmd
когда вы вызываете виджет vi-cmd-mode
, оставаясь в режиме поиска. то есть в режиме emacs
нажатие клавиши Esc или клавиш Ctrl+X Ctrl+V переключает режим поиска между таблицами клавиш emacs
и vicmd
. (Вызывать history-incremental-search-backward
из vicmd
таким образом, хлопотно, если только вы не привязываете что-либо к vi-cmd-mode
в vicmd
.)
- Режим поиска в
vi-history-search-backward
рассматривает виджет vi-cmd-mode
как accept-line
и завершает поиск, снова входя в командный режим, из которого вы ввели поиск. т.е. (с привязками по умолчанию) / входит в режим поиска из командного режима, а Esc возвращается в командный режим.
- Повторение поиска:
- В
history-incremental-search-backward
распознаются виджеты history-incremental-search-backward
и vi-rev-repeat-search
. т.е. (предполагая, что вы изменили привязки, как указано выше), и Ctrl+R, и N будут искать предыдущую совпадающую строку.
- В
vi-history-search-backward
распознается только виджет vi-rev-repeat-search
. т.е. (при условии, что вы изменили привязки, как указано выше), Ctrl+R вызовет звуковой сигнал и будет проигнорирован.