Multi-ligne regex soutien dans Vim
Je remarque que le standard de la regex de la syntaxe pour la mise en correspondance sur plusieurs lignes est d'utiliser /s, comme suit:
This is\nsome text
/This.*text/s
Cela fonctionne en Perl par exemple, mais ne semble pas être pris en charge dans Vim. Au lieu de cela, je dois être beaucoup plus spécifique:
/This[^\r\n]*[\r\n]*text/
Je ne peux pas trouver une raison pour laquelle cela devrait être, donc je pense que je l'ai probablement raté de peu pertinentes de bits dans le vim de l'aide.
Quelqu'un peut confirmer ce comportement d'une façon ou de l'autre?
Vous devez vous connecter pour publier un commentaire.
Oui, Perl
//s
modificateur n'est pas disponible sur Vim regexes. Voir:h perl-patterns
pour plus de détails et une liste d'autres différences entre Vim et Perl regexes.Au lieu de cela, vous pouvez utiliser
\_.
, qui signifie "n'importe quel caractère unique, y compris le saut de ligne". C'est un peu plus court que ce que vous avez. Voir:h /\_.
.:h /\_.
faire? Je veux dire, je sais que ça fonctionne, mais pourquoi ne:h /\_.
de travail, et pas:h \_.
?\_.
que vous pouvez lire comme suit: donnez-moi de l'aide pour de l'expression de recherche\_.
foo bar \n foo baz \n foo
, essayez/foo\_.\{ - }foo