Parcourez les correspondances dans ZSH history-incremental-pattern-search-backward

10

J'ai récemment changé la recherche d'historique à utiliser history-incremental-pattern-search-backwardcar elle permet des modèles dans la recherche. Voici comment il est configuré dans mon.zshrc

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

Cela fonctionne très bien, mais je ne sais pas comment aller à la prochaine correspondance dans le menu de recherche.

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

Y a-t-il une clé pour le faire?

claytron
la source

Réponses:

12

Enfin trouvé la bonne incantation. Vous devez mapper la recherche de motif en mode insertion. C'était la pièce qui me manquait:

# 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

J'aurais utilisé ^Bpour la recherche en arrière en mode insertion, mais je l'ai mappé à autre chose. Alors maintenant ^Ret ^Fparcourez les matchs.

claytron
la source
que fait la -Mcommande? Dans mon cas, même sans le -Mmot-clé, cela fonctionne très bien ..
alpha_989
Le -M keymapdit bindkey qui keymap appliquer la liaison à. Je l'ai configuré pour le mode d'insertion et le mode de commande.
claytron
Merci pour la clarification. Dans mon cas, je viens de le faire bindkey '^R' history-incremental-pattern-search-backward, et cela fonctionne. J'utilise également la /commande par défaut dans le modèle normal vi dans zsh. En ce sens, je peux rechercher l'historique des commandes, et une fois qu'il trouvera la commande, il ne fournira que cela sur la ligne de commande. Ensuite, je peux modifier la dernière commande si nécessaire.
alpha_989
Si j'utilise '^R' history-incremental-pattern-search-backward, d'un autre côté, cela me donnera simplement la dernière commande correspondant à la chaîne de recherche. Cependant, je n'ai pas trouvé de moyen de pouvoir réellement modifier la commande. Après avoir trouvé une commande appropriée correspondant à la chaîne de recherche par le biais d'une recherche incrémentielle de motifs, existe-t-il des combinaisons de touches spécifiques sur lesquelles je peux appuyer pour pouvoir modifier la commande?
alpha_989
9

Selon la zshzlepage de manuel de zsh 4.3.10, aucune clé n'est liée par défaut. Vous devez ajouter des liaisons à la isearchcarte et seuls quelques widgets sont disponibles. Par exemple, vous pouvez faire:

bindkey -M isearch '^R' history-incremental-search-backward
bindkey -M isearch '^S' history-incremental-search-forward
Gilles 'SO- arrête d'être méchant'
la source
bindkey -lne montre pas de isearchcartographie
claytron
@claytron: doit être un problème de version: isearchest nouveau dans 4.3.10, alors qu'il history-incremental-pattern-search-backwardest apparu dans 4.3.7 (si j'ai lu correctement le changelog).
Gilles 'SO- arrête d'être méchant'
J'utilise 4.3.10, je ne sais pas pourquoi il n'y est pas. Cependant, l'utilisation des liaisons en mode insertion a fonctionné pour moi.
claytron