1

Когда для zsh включен режим vi (bindkey -v), есть ли возможность искать историю в обычном режиме, то есть набирать несколько букв и нажимать клавиши со стрелками вверх / вниз?

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

Также кажется, что поиск в режиме vi соответствует где-либо в команде, я хочу найти совпадение только при запуске команды, как при обычном поиске с помощью клавиш со стрелками.

1 ответ1

0

Обратите внимание, что вы обсуждаете различные методологии поиска здесь:

Поиск по «пути VI» с / или ? будет искать все команды, хранящиеся в истории.

Клавиши со стрелками вверх и вниз требуют чего-то другого: вы хотите, чтобы они перебирали элементы, хранящиеся в истории, которые совпадают (в начале) с тем, что вы уже набрали в командной строке.

Не вдаваясь в подробности, следующее должно быть довольно надежным способом достижения этого:

autoload -Uz history-search-end

zle -N history-beginning-search-backward-end history-search-end
zle -N history-beginning-search-forward-end history-search-end

bindkey -M vicmd '^[[A' history-beginning-search-backward-end \
                 '^[OA' history-beginning-search-backward-end \
                 '^[[B' history-beginning-search-forward-end \
                 '^[OB' history-beginning-search-forward-end
bindkey -M viins '^[[A' history-beginning-search-backward-end \
                 '^[OA' history-beginning-search-backward-end \
                 '^[[B' history-beginning-search-forward-end \
                 '^[OB' history-beginning-search-forward-end

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .