Zsh в режиме vi, но с помощью клавиш со стрелками для поиска истории

284
Kris

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

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

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

1

1 ответ на вопрос

0
wjv

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

Поиск «по пути 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 

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