web-dev-qa-db-fra.com

Prise en charge des expressions régulières multi-lignes dans Vim

Je remarque que la syntaxe regex standard pour la correspondance sur plusieurs lignes est d'utiliser/s, comme ceci:

This is\nsome text
/This.*text/s

Cela fonctionne par exemple en Perl mais ne semble pas être pris en charge dans Vim. Au lieu de cela, je dois être beaucoup plus précis:

/This[^\r\n]*[\r\n]*text/

Je ne trouve aucune raison pour laquelle cela devrait être, donc je pense que j'ai probablement raté les bits pertinents dans l'aide de Vim.

Quelqu'un peut-il confirmer ce comportement d'une manière ou d'une autre?

106
Daniel

Oui, Perl's //s Le modificateur n'est pas disponible sur les expressions régulières Vim. Voir :h Perl-patterns pour plus de détails et une liste d'autres différences entre les expressions rationnelles Vim et Perl.

À la place, vous pouvez utiliser \_., ce qui signifie "faire correspondre n'importe quel caractère, y compris la nouvelle ligne". C'est un peu plus court que ce que vous avez. Voir :h /\_..

/This\_.*text/
165
Brian Carper