Как я выполняю обратный поиск истории в vi-режиме ZSH?

В главном окне VirtualBox переходят в File->Preferences, выбрать Network и нажмите значок справа, показав карту с a + знак.

48
27.07.2012, 14:30
2 ответа

Можно работать bindkey без аргументов для получения списка существующей привязки, например:

# Enter vi mode
chopper:~> bindkey -v

# Search for history key bindings
chopper:~> bindkey | fgrep history
"^[OA" up-line-or-history
"^[OB" down-line-or-history
"^[[A" up-line-or-history
"^[[B" down-line-or-history

В emacs режиме привязка, которую Вы хотите, history-incremental-search-backward, но это не связывается по умолчанию в vi режиме. Для привязки Ctrl-R самостоятельно можно выполнить эту команду или добавить его к Вашему ~/.zshrc:

bindkey "^R" history-incremental-search-backward

zshzle страница справочника (man zshzle) имеет больше информации о строчном редакторе zsh, bindkey, и emacs/vi режимов.

58
27.01.2020, 19:34
  • 1
    Спасибо, особенно для zshzle. Это довольно информативно и полезно. дисковые –  Hank Gay 27.07.2012, 18:27
  • 2
    я люблю Вас. Серьезно. После обновления до поиска реверса El Capitan OSX закончился, и я пропустил его больше, чем все остальное в моем ежедневном рабочем процессе. –  Christian 17.10.2015, 21:09

Это древний вопрос, но единственный (и принятый) ответ в основном говорит о том, как перенести «похожий на emacs» history-incremental-search-backward в режим vi. Хотя это вполне выполнимо и может быть для вас правильным решением, немного странно, что никто не упомянул «vi-способ» поиска в истории.

Режим vi в zsh поддерживает историю поиска с использованием стандартных ключей vi / vim: / и ? , оба доступны в командном режиме. (Нажмите , чтобы переключиться из режима вставки в командный, как в vi или vim.)

Однако их смысл обратный: поскольку вы обычно хотите искать в истории своей оболочки в обратном порядке, / выполняет обратный поиск, тогда как ? выполняет прямой поиск.

После отображения первого совпадения вы можете (как и в vi / vim) использовать n , чтобы продолжить поиск совпадений в том же направлении, или N , чтобы изменить направление поиска.

Соответствующие сочетания клавиш по умолчанию в таблице клавиш vicmd :

"/" vi-history-search-backward
"?" vi-history-search-forward
"n" vi-repeat-search
"N" vi-rev-repeat-search
24
27.01.2020, 19:34

Теги

Похожие вопросы