Partilhar via


How to: Automatizar aProcurar de Textoe substituir

Visual Studiooferece a capacidade de pesquisar e substituir texto em documentos que estão abertos no ambiente de desenvolvimento integrado (IDE) e contidas em arquivos no sistema. A principal maneira de fazer isso é usando o FindReplace e Execute métodos para a Find objeto. O TextSelection e EditPoint objetos também oferecem a FindPattern método. Para obter mais informações, consulte o FindPattern método na How to: Controlar o Editor de Código (Visual Basic).

ObservaçãoObservação

O vsFindOptionsMatchInHiddenTex[t] valor constante na [vsFindOptions] enumeração não se aplica a FindPattern método porque ele pesquisa todo o texto, incluindo texto oculto.

A versão do Find na EnvDTE80 namespace chamado Find2. É igual a Find o objeto, mas ele oferece uma nova propriedade chamada WaitForFindToComplete. Quando essa propriedade boolean é definida como True, a operação de localização não concluir até que todos os itens selecionados foram pesquisados documentos.

Se, por exemplo pesquisar uma palavra em documentos de 100, você pode receber resultados incompletos, a menos que você seja usado o WaitForFindToComplete propriedade ou manipulado o FindDone de evento. Métodos de trabalho mas configuração o WaitForFindToComplete propriedade é uma forma menor e mais fácil de garantir que todos os documentos são pesquisados antes de exibir os resultados da pesquisa.

ObservaçãoObservação

As caixas de diálogo e comandos de menu demonstradas podem ser diferentes daqueles descritos na Ajuda, dependendo das configurações ativas ou configurações de edição. Esses procedimentos foram desenvolvidos com o General Development Settings ativo. Para alterar as configurações, escolha importação e Exportar configurações sobre o Ferramentas menu. Para obter mais informações, consulte Trabalhando com configurações.

Exemplo

Os exemplos a seguir demonstram como referência e usar os vários membros do modelo de automação de localizar. Este exemplo cria um documento de texto com algum texto e em seguida, pesquisa e substitui o texto usando métodos diferentes. Para executar esse exemplo, substitua o OnConnection método em um suplemento simple com o código a seguir. Para executar diferentes seções deste exemplo, descomente o código apropriado. Antes de executar esse código, certifique-se de que o "incorporar Interop tipos" propriedade de referência do assembly EnvDTE como 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()
}

Consulte também

Tarefas

How to: Compilar e executar os exemplos de código de modelo de objeto de automação

How to: Controlar o Editor de Código (Visual Basic)

How to: Criar um Adicionar-

Walkthrough: Criando um assistente

Conceitos

Automation Object Model Chart

Outros recursos

Criar e controlar o ambiente Windows

Criação de assistentes e ins Adicionar-

Automation and Extensibility Reference