web-dev-qa-db-fra.com

Recherche et remplacement multilignes dans Visual Studio

Cela peut-il être fait? Nous utilisons VS2005, VS2008 et VS2010.

Je ne parle pas des expressions régulières - qui ont leur place - mais du vieux texte brut, trouver et remplacer. Je sais que nous pouvons le faire (à la limite) avec des expressions rationnelles utilisant la balise\n, mais nous préférons ne pas être empêtrés dans des 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 détruire notre propre macro.

68
hawbsl

Je l'ai finalement trouvé .. 

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

Cela fonctionne dans Visual Studio 2008 avec une macro intégrée au moins. :)

Pas :
1) Sélectionnez le texte que vous souhaitez rechercher.
2) Appuyez sur "Alt + F8" ou ouvrez "Outils -> Macros -> Macro Explorer".
3) Double-cliquez sur "Exemple -> Utilitaires -> 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 ça. ))
4) Cliquez sur le bouton "Remplacer rapidement" dans la boîte de dialogue "Rechercher et remplacer". Entrez votre remplacer par du texte.
5) Et cliquez sur l’un des 3 boutons correspondant à vos besoins ... et c’est fait. :)

Hourra .. ça marche .. Peut-être pas une façon simple de le faire mais vous savez avec MS .. rien n'est simple et facile .. :)

65
SV.

Vous voudrez peut-être jeter un coup d'œil à cette entrée de blog:

Recherche multiligne et remplacement dans Visual Studio

Fournit un code de macro permettant d’échapper à votre recherche et d’afficher la boîte de dialogue Recherche et remplacement de VS.

18
Robert Adams

Cela fonctionne aujourd'hui dans Visual Studio 2012:

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

Voyez comment la partie (.*\n)+? fait la correspondance sur plusieurs lignes, non gourmande.
fooPatternToStart est un motif de regex sur votre ligne de départ, alors que barPatternToEnd est votre motif à rechercher sur une autre ligne ci-dessous, éventuellement plusieurs lignes ci-dessous ...

Exemple trouvé ici .

Simple et efficace :)

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

12
woohoo

Vous pouvez rechercher des expressions multilignes en cochant la case "Utiliser des expressions régulières" dans la boîte de dialogue "Rechercher et remplacer". Les sauts de ligne sont alors indiqués par \n.

enter image description here

11
Phillip Ngan
6
maurox

En ce qui concerne le commentaire de Andrew Corkery le 19 août 2011 à 9h52 ci-dessus:

Si vous souhaitez également spécifier une chaîne de remplacement multiligne, modifiez le code de la macro et définissez le texte de remplacement comme indiqué ci-dessous. nécessaire.

 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
1
zaengi

Son fourni par Microsoft uniquement. Vérifiez https://visualstudiogallery.msdn.Microsoft.com/699CE302-B0D4-4083-BE0E-1682E873CEBF .

Il utilise uniquement l'expression régulière. Mais pour ceux qui ne connaissent pas regex, il vaut mieux l’utiliser. 

1
Mahesh Malpani

Vous pouvez également ouvrir les fichiers avec UltraEdit qui prend pleinement en charge le remplacement de MultiLine. Vous pouvez utiliser la version d’essai si vous avez l’intention de ne l’utiliser qu’une fois. 

1
Fedor Steeman

La dernière version (à la date de cette publication) de Notepad ++ recherche/remplace plusieurs lignes. Je ne sais pas si c'était vrai à l'époque où cela a été demandé. Mais en l'absence de prise en charge de macros dans Visual Studio, cela est pertinent maintenant.

0
sliderhouserules