Percorra as correspondências no ZSH history-incremental-pattern-search-backward

10

Recentemente, mudei a pesquisa de histórico para usar, history-incremental-pattern-search-backwardpois ela permite padrões na pesquisa. Aqui está como ele está configurado no meu.zshrc

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

Isso funciona muito bem, mas não consigo descobrir como ir para a próxima partida no menu de pesquisa.

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

Existe uma chave obrigada a fazer isso?

claytron
fonte

Respostas:

12

Finalmente encontrou o encantamento certo. Você precisa mapear a pesquisa de padrões no modo de inserção. Esta foi a peça que estava faltando:

# 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

Eu teria usado ^Bpara pesquisa reversa no modo de inserção, mas tenho isso mapeado para outra coisa. Então agora ^Re ^Fpercorra as partidas.

claytron
fonte
o que o -Mcomando faz? No meu caso, mesmo sem a -Mpalavra-chave isso funciona muito bem ..
alpha_989
A -M keymapconta bindkey que keymap para aplicar a ligação a. Eu configurei para o modo de inserção e modo de comando.
22918
Obrigado pelo esclarecimento. No meu caso, eu apenas tenho bindkey '^R' history-incremental-pattern-search-backward, e funciona. Eu também uso o /comando padrão no modelo vi normal no zsh. Nisso eu posso pesquisar o histórico de comandos e, uma vez que ele encontrar o comando, ele apenas fornecerá isso na linha de comando. Então eu posso modificar o último comando, se necessário.
alpha_989
Se eu usar '^R' history-incremental-pattern-search-backward, por outro lado, ele me levará apenas ao último comando que corresponde à string de pesquisa. No entanto, não encontrei uma maneira de poder editar o comando. Depois de encontrar um comando adequado que corresponda à string de pesquisa por meio da pesquisa de padrões incremantal, existem combinações de teclas específicas que eu posso pressionar para poder editar o comando?
alpha_989
8

De acordo com a zshzlepágina de manual do zsh 4.3.10, nenhuma chave é vinculada por padrão. Você precisa adicionar ligações ao isearchmapa, e apenas alguns widgets estão disponíveis. Por exemplo, você pode fazer:

bindkey -M isearch '^R' history-incremental-search-backward
bindkey -M isearch '^S' history-incremental-search-forward
Gilles 'SO- parar de ser mau'
fonte
bindkey -lnão mostra um isearchmapeamento
claytron 10/10
@claytron: deve ser um problema de versão: isearché novo no 4.3.10, enquanto history-incremental-pattern-search-backwardapareceu no 4.3.7 (se eu ler o changelog corretamente).
Gilles 'SO- stop be evil'
Estou usando 4.3.10, não sei por que não está lá. No entanto, usando as ligações do modo de inserção funcionou para mim.
claytron 10/10/10