12
votes

Comment puis-je rechercher dans Vim pour une ligne qui a 2 mots spécifiques?

Je veux trouver une ligne qui a à la fois "foo" et "bar" dans cet ordre mais pas nécessairement côte à côte.

J'ai essayé ce qui suit et que cela n'a pas fonctionné: xxx

vim

2 commentaires

Peut-être que votre problème est le paramètre «magique». Lire: Aide 'Magic' et: Définir la magie? pour voir si c'est le problème.


C'était ça ... Qu'est-ce que la magie?


3 Réponses :


10
votes

fonctionne pour moi: xxx


2 commentaires

Idem; Case-insensible: /foo.*bar\c


Malheureusement, "travaille pour moi" ne donne pas de raison pourquoi ou probablement cause (s).



21
votes

Utilisation:

:set magic
/foo.*bar


2 commentaires

Je suis à peu près sûr que c'est une valeur par défaut de nos jours (au moins mon Vim sur Windows).


Je suis d'accord, c'est aussi la valeur par défaut, mais je ne sais pas pourquoi il n'a pas été fixé pour Sasha - peut-être qu'il utilise une version plus ancienne ou invoquant VI au lieu de Vim.



2
votes

h: motif de recherche

1. Un motif est une ou plusieurs branches, séparées par "\ |". Il correspond à tout ce qui correspond à l'une des branches.

Exemple: FOO \ | BEEP correspond à "FOO" et correspond à "BEEP". Si plus d'une branche correspond, le premier est utilisé.

2. une branche est un ou plusieurs concats, séparés par \ & . Il correspond au dernier concat, mais uniquement si tous les concats précédents correspondent également à la même position.

Exemples:
foobep \ & ... correspond à "FOO" dans "FOOBEEP".
. * Peter \ &. * Bob correspond à une ligne contenant à la fois "Peter" et "Bob"


2 commentaires

2. Est vraiment utile, je rencontre souvent de telles situations. +1 pour ça


Semble . * préfixe est nécessaire pour chaque motif, lorsque les lignes de recherche contiennent à la fois .