Звичайно, ви більше не можете використовувати Ctrl+ R. Якщо ви ознайомтеся з посібником із Z Shell, то ви побачите, що history-incremental-search-backward
у emacs
графічній картці віджета є лише прив’язка ключа . У клавішах vi немає ключових прив’язок для цього.
Але як ви також знайдете, прочитавши посібник (це глава 18), додавання прив'язки ключів є досить простою вправою у використанні bindkey
команди:
bindkey "^R" history-incremental-search-backward
Вам навіть не потрібно використовувати zle
команду для відображення віджета на функції оболонки, оскільки це стандартний віджет.
Якщо ви звернетесь до відповіді на це ж запитання, яке знаходиться у вікі Z Z Shell , ви побачите команди, які спеціально додають це до клавішів vi "команда" та "режим вставки":
bindkey -M viins '^R' history-incremental-search-backward
bindkey -M vicmd '^R' history-incremental-search-backward
Також зауважте, що, як вказує garyjohn , у клавіатурній карті vi "command", /символ прив'язується до 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) який отримує більше результатів. Дякую обом!