Multiline Find & Replace dans Visual Studio

Peut-on le faire? Nous utilisons VS2005 et VS2008 et VS2010.

Je ne parle pas des expressions régulières – qui ont leur place – mais du texte ancien à la recherche et au remplacement. Je sais que nous pouvons le faire (à la rigueur) avec des expressions régulières en utilisant la balise \ n, mais préférons ne pas être enchevêtré dans les caractères d’échappement regex, en plus d’un problème de lisibilité.

Si cela ne peut pas être fait, quelle alternative simple et gratuite (gratuite) les gens utilisent-ils? Cela n’implique pas de renverser notre propre macro.

Je l’ai finalement trouvé ..

Pas besoin de télécharger et de charger une macro externe.

Son fonctionnement dans Visual Studio 2008 avec au moins la macro intégrée. 🙂

Pas :
1) Sélectionnez le texte que vous souhaitez trouver.
2) Appuyez sur “Alt + F8” ou ouvrez “Outils -> Macros -> Macro Explorer”
3) Double-cliquez sur “Sample -> Utilities -> FindLine”. (Cela ouvrira la boîte de recherche avec votre sélection chargée dans le champ “Rechercher”. Ne vous inquiétez pas du texte tronqué affiché dans le champ “Rechercher”. Faites-moi confiance, le champ a tout..MS façon de le montrer peut être …: ))
4) Cliquez sur le bouton “Remplacer rapidement” dans la boîte de dialog “Rechercher et remplacer”. Entrez votre remplacement avec le texte.
5) Et cliquez sur l’un des 3 boutons selon vos besoins … et c’est fait. 🙂

Hourra .. son fonctionnement .. peut ne pas être une façon simple de le faire, mais vous savez avec MS .. rien n’est simple et facile .. 🙂

Vous pourriez vouloir jeter un oeil à cette entrée de blog:

Recherche multiligne et remplacement dans Visual Studio

Fournit un code macro pour échapper à votre recherche et afficher la boîte de dialog Rechercher et remplacer VS.

Cela fonctionne aujourd’hui dans Visual Studio 2012:

fooPatternToStart.*(.*\n)+?.*barPatternToEnd 

Voir comment le (.*\n)+? la partie fait le match sur plusieurs lignes, non gourmandes.
fooPatternToStart est un modèle de regex sur votre ligne de départ, alors que barPatternToEnd est votre modèle pour trouver sur une autre ligne ci-dessous, peut-être plusieurs lignes ci-dessous …

Exemple trouvé ici .

Simple et efficace 🙂

Remarque: avant VS2012, le modèle fooPatternToStart.(.\n)+@.*barPatternToEnd était: fooPatternToStart.(.\n)+@.*barPatternToEnd

Vous pouvez rechercher des expressions multilignes en cliquant sur la case à cocher “Utiliser les expressions régulières” dans la boîte de dialog “Rechercher et remplacer”. Les sauts de ligne sont alors indiqués par \n .

entrer la description de l'image ici

J’utilise ceci: Visual Studio Gallery Multiline Search and Replace

Vous pouvez également ouvrir les fichiers avec UltraEdit qui prend entièrement en charge le remplacement de MultiLine. Vous pouvez utiliser la version d’évaluation si vous ne souhaitez l’utiliser qu’une seule fois.

En ce qui concerne le commentaire d’Andrew Corkery le 19 août 11 à 9h52 ci-dessus:

Si vous souhaitez également spécifier une chaîne de remplacement à plusieurs lignes, modifiez le code de la macro et définissez le texte de remplacement comme indiqué ci-dessous. Cela vous permettra d’affiner votre remplacement avec les petites modifications nécessaires.

  Sub FindLine() Dim textSelection As TextSelection textSelection = DTE.ActiveDocument.Selection textSelection.CharLeft(True) DTE.ExecuteCommand("Edit.Find") DTE.Find.FindWhat = textSelection.Text 'also preset replacement text with current selection DTE.Find.ReplaceWith = textSelection.Text End Sub 

Son fourni par Microsoft uniquement. Veuillez vérifier https://visualstudiogallery.msdn.microsoft.com/699CE302-B0D4-4083-BE0E-1682E873CEBF .

Il utilise uniquement des expressions régulières. Mais pour ceux qui ne connaissent pas le regex, mieux vaut l’utiliser.

La dernière version (à ce jour) de Notepad ++ effectue la recherche / remplacement de plusieurs lignes. Je ne sais pas si cela était vrai quand cela a été demandé. Mais sans la prise en charge de macro dans Visual Studio, cela est pertinent maintenant.