Конечно, вы больше не можете использовать 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
Также обратите внимание, что, как указывает Гэрион , в таблице ключей «команда» vi /символ привязан к vi-history-search-backward
виджету. Разница между этим виджетом и history-incremental-search-backward
виджетом заключается в поведении виджета, которое применяется, если один находится в режиме поиска по истории. Вот пара различий, которые вы заметите:
- Переключение режимов vi:
- Режим поиска
history-incremental-search-backward
Переключение между main
и vicmd
раскладок при вызове vi-cmd-mode
виджета пока все еще оставаясь в режиме поиска. т.е. из emacs
режима presssing на Escклавишах или Ctrl+ XCtrl+ 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вызовет звуковой сигнал и будет проигнорирован.
garyjohn
показывает Vim способ сделать это иJdeBP
показывает, как вернуть привязку клавиш для Ctrl + R! Я собираюсь поиграть с обоими методами и приму ответ позже. Я решу, основываясь на 1), какой метод мне кажется более легким, и 2) который получает больше голосов. Спасибо вам обоим!