Sdílet prostřednictvím


Postupy: Automatizace vyhledávání a nahrazování textu

Doplňky Visual Studio jsou ve verzi aplikace Visual Studio 2013 zastaralé.Měli byste upgradovat doplňky na rozšíření VSPackage.Další informace o upgradu viz Nejčastější dotazy: Převádění doplňků na rozšíření VSPackage.

Visual Studio umožňuje vyhledat a nahradit text v dokumentech, které jsou otevřeny v integrovaném vývojovém prostředí (IDE), a v souborech v systému.Primárním způsob, jak toho dosáhnout, je použít metody FindReplace a Execute objektu Find.Objekty TextSelection a EditPoint nabízejí také metody FindPattern.Další informace naleznete v metodě FindPattern v Postupy: Řízení editoru kódu (Visual Basic).

[!POZNÁMKA]

Konstantní hodnota VsFindOptionsMatchInHiddenTex[t] ve výčtu [vsFindOptions] se nevztahuje na metodu FindPattern, protože prohledává veškerý text včetně skrytého.

Verze Find v oboru názvů EnvDTE80 se jmenuje Find2.Je stejný jako objekt Find, ale nabízí novou vlastnost s názvem WaitForFindToComplete.Pokud tato booleovská vlastnost nastavena na True, operace hledání neskončí, dokud nejsou prohledány všechny vybrané dokumenty.

Pokud jste například hledali slovo ve 100 dokumentech, mohli jste získat neúplné výsledky, pokud jste nepoužili vlastnost WaitForFindToComplete nebo nezpracovali událost FindDone.Obě metody fungují, ale nastavení vlastnosti WaitForFindToComplete je kratší a jednodušší způsob, jak zajistit, aby před zobrazením výsledků hledání byly prohledány všechny dokumenty.

[!POZNÁMKA]

Dialogová okna a příkazy nabídek, které vidíte, se mohou lišit od těch popsaných v nápovědě v závislosti na aktivních nastaveních nebo edici.Tyto postupy byly vyvinuty s aktivním Obecným vývojovým nastavením.Chcete-li změnit nastavení, zvolte NastaveníImportu a Exportu v nabídce Nástroje.Další informace naleznete v tématu Přizpůsobení nastavení pro vývoj v sadě Visual Studio.

Příklad

Následující příklady ukazují, jak odkazovat a využívat různé členy modelu automatizace hledání.Tento příklad vytvoří textový dokument s nějakým text a potom vyhledá a nahradí text pomocí různých metod.Chcete-li spustit tento příklad, nahraďte metodu OnConnection jednoduchým doplňkem do níže uvedeného kódu.Chcete-li spustit jiné části tohoto příkladu, odkomentujte příslušný kód.Před spuštěním tohoto kódu se ujistěte, že vlastnost „Přibalit definované typy“ sestavení EnvDTE sestavení odkazuje na hodnotu False.

Public Sub OnConnection(ByVal application As Object, ByVal _
connectMode As ext_ConnectMode, ByVal addInInst As Object, _
ByRef custom As Array) Implements IDTExtensibility2.OnConnection
    _applicationObject = CType(application, DTE2)
    _addInInstance = CType(addInInst, AddIn)
    searchReplace(_applicationObject)
End Sub

Public Sub searchReplace(ByVal dte As DTE2)
    Dim findWin As Find2
    Dim doc As Document
    Dim textDoc As TextDocument
    Dim textSel As TextSelection
    Dim iCtr As Integer

    ' Create a new text file.
    dte.ItemOperations.NewFile("General\Text File")

    ' Set up references for the text document, Find object, and
    ' TextSelection object.
    doc = dte.ActiveDocument
    textDoc = CType(doc.Object("TextDocument"), TextDocument)
    textSel = textDoc.Selection
    findWin = CType(dte.Find, Find2)
    ' Make sure all docs are searched before displaying results.
    findWin.WaitForFindToComplete = True

    ' Insert ten lines of text.
    For iCtr = 1 To 10
        textDoc.Selection.Text = "This is a test" & vbCr
    Next iCtr
    textDoc.Selection.Text = "This is a different word"

    ' Uses FindReplace to find all occurrences of the word, test, in 
    ' the document.
    MsgBox("Now changing all occurrences of 'test' to 'replacement'.")
    findWin.FindReplace(vsFindAction.vsFindActionReplaceAll, "test", _
      vsFindOptions.vsFindOptionsMatchCase, "replacement", _
      vsFindTarget.vsFindTargetCurrentDocument, , , _
      vsFindResultsLocation.vsFindResultsNone)

    ' Uses Find2.Execute to find the word, different, in the document.
    ' findWin.FindWhat = "different"
    ' findWin.MatchCase = True
    ' findWin.Execute()

    ' Uses Find2.Execute to replace all occurrences of the word, Test, 
    ' with the word, replacement.
    ' findWin.FindWhat = "test"
    ' findWin.ReplaceWith = "replacement"
    ' findWin.Action = vsFindAction.vsFindActionReplaceAll
    ' findWin.Execute()
End Sub
public void OnConnection(object application, ext_ConnectMode 
  connectMode, object addInInst, ref Array custom)
{
    _applicationObject = (DTE2)application;
    _addInInstance = (AddIn)addInInst;
    searchReplace(_applicationObject);
}

public void searchReplace(DTE2 dte)
{
    Find2 findWin;
    Document doc;
    TextDocument textDoc;
    TextSelection textSel;
    int iCtr;

    // Create a new text file.
    dte.ItemOperations.NewFile("General\\Text File"
      ,"New file",Constants.vsViewKindTextView);

    // Set up references for the text document, Find object, and
    // TextSelection object.
    doc = dte.ActiveDocument;
    textDoc = (TextDocument) doc.Object("TextDocument");
    textSel = textDoc.Selection;
    findWin = (Find2) dte.Find;
    // Make sure all docs are searched before displaying results.
    findWin.WaitForFindToComplete = true;

    // Insert ten lines of text.
    for(iCtr=1; iCtr<=10; iCtr++)
    {
        textDoc.Selection.Text = "This is a test"+Environment.NewLine;
    }
    textDoc.Selection.Text = "This is a different word";

    // Uses FindReplace to find all occurrences of the word, test, in 
    // the document.
   System.Windows.Forms.MessageBox.Show(
     "Now changing all occurrences of 'test' to 'replacement'.");
   findWin.FindReplace(vsFindAction.vsFindActionReplaceAll, "test", 
     (int) vsFindOptions.vsFindOptionsFromStart, "replacement", 
     vsFindTarget.vsFindTargetCurrentDocument, "", 
     "",vsFindResultsLocation.vsFindResultsNone);

   // Uses Find2.Execute to find the word, different, in the document.
   // findWin.FindWhat = "different"
   // findWin.MatchCase = True
   // findWin.Execute()

   // Uses Find2.Execute to replace all occurrences of the word, Test, 
   // with the word, replacement.
   // findWin.FindWhat = "test"
   // findWin.ReplaceWith = "replacement"
   // findWin.Action = vsFindAction.vsFindActionReplaceAll
   // findWin.Execute()
}

Viz také

Úkoly

Postupy: Kompilace a spuštění příkladů kódu objektu automatizace

Postupy: Řízení editoru kódu (Visual Basic)

Postupy: Vytvoření doplňku

Návod: Vytvoření průvodce

Koncepty

Graf modelu objektů automatizace

Další zdroje

Vytváření a řízení oken prostředí

Vytváření doplňků a průvodců

Referenční dokumentace automatizace a rozšíření