Циклические совпадения в ZSH history-incremental-pattern-search-backward

10

Я недавно переключил поиск по истории на использование, history-incremental-pattern-search-backwardтак как он учитывает шаблоны в поиске. Вот как это настроено в моем.zshrc

bindkey -M vicmd '/' history-incremental-pattern-search-backward

Это прекрасно работает, но я не могу понять, как перейти к следующему совпадению из меню поиска.

% cat foobarbaz.txt
bck-i-search: f*baz

Есть ли ключ для этого?

claytron
источник

Ответы:

12

Наконец-то нашли правильное заклинание. Вам необходимо сопоставить поиск шаблона в режиме вставки. Это был кусок, который мне не хватало:

# Search backwards and forwards with a pattern
bindkey -M vicmd '/' history-incremental-pattern-search-backward
bindkey -M vicmd '?' history-incremental-pattern-search-forward

# set up for insert mode too
bindkey -M viins '^R' history-incremental-pattern-search-backward
bindkey -M viins '^F' history-incremental-pattern-search-forward

Я бы использовал ^Bобратный поиск в режиме вставки, но я сопоставил это с чем-то другим. Так что теперь ^Rи ^Fцикл через матчи.

claytron
источник
что делает -Mкоманда? В моем случае даже без -Mключевого слова это прекрасно работает ..
alpha_989
-M keymapГоворит bindkey , который KEYMAP применять связывание. Я настроил его как для режима вставки, так и для командного режима.
Клейтрон
Спасибо за разъяснения. В моем случае у меня просто есть bindkey '^R' history-incremental-pattern-search-backward, и это работает. Я также использую команду по умолчанию /в нормальной модели vi в zsh. В этом я могу искать историю команд, и как только она найдет команду, она просто предоставит ее в командной строке. Затем я могу изменить последнюю команду, если это необходимо.
alpha_989
С '^R' history-incremental-pattern-search-backwardдругой стороны, если я воспользуюсь , я просто получу последнюю команду, соответствующую строке поиска. Тем не менее, я не нашел способа реально редактировать команду. После нахождения подходящей команды, совпадающей со строкой поиска, путем поиска инкрементного шаблона, есть ли какие-либо конкретные комбинации клавиш, которые я могу нажать, чтобы иметь возможность редактировать команду?
alpha_989
9

Согласно zshzleстранице руководства для zsh 4.3.10, ни один ключ не привязан по умолчанию. Вам нужно добавить привязки к isearchкарте, и доступны только несколько виджетов. Например, вы можете сделать:

bindkey -M isearch '^R' history-incremental-search-backward
bindkey -M isearch '^S' history-incremental-search-forward
Жиль "ТАК - перестань быть злым"
источник
bindkey -lне показывает isearchкартографирование
глятрон
@claytron: должна быть проблема с версией: isearchновая в 4.3.10, а history-incremental-pattern-search-backwardпоявилась в 4.3.7 (если я правильно прочитал список изменений).
Жиль "ТАК - перестань быть злым"
Я использую 4.3.10, не уверен, почему его там нет. Использование привязки в режиме вставки работало для меня, хотя.
Клейтрон