How to: Controlar o Editor de Código (Visual Basic)
O Visual Studio o editor de código é um editor de texto que acomoda os serviços de linguagem, como Visual Basic, Visual C++, e Visual C#. Texto é escrito em um buffer que exibe um documento de texto. Usando o Visual Studio objetos do modelo de automação do Editor; Você pode manipular o texto nos bastidores no buffer de texto ou no modo de exibição.
Quatro principais objetos usados para controlar o texto no editor de código são:
Nome do objeto |
Descrição |
---|---|
Usado para manipular o texto no modo de exibição. O TextSelection de objeto representa o ponto de inserção (ou cursor) ou selecionado o texto do documento visível. |
|
Uma posição fixa no buffer de texto. |
|
Semelhante a TextPoint o objeto, mas ele pode ser movida e pode modificar o texto no buffer. |
|
Semelhante a TextPoint o objeto, exceto que ela contém a funcionalidade adicional para localizar as posições de texto no espaço virtual. |
Os dois objetos principais, você pode usar para manipular o editor de código são o TextSelection e EditPoint2 objetos. As principais diferenças entre eles estão:
TextSelectionrepresenta a seleção de texto visível. Alterar sua posição altera a seleção no modo de exibição. Um EditPoint2 não está vinculada a qualquer componente de interface (UI) do usuário, para que a sua posição alteração nada no modo de exibição.
Porque TextSelection representa a seleção visível, existe apenas um TextSelection objeto por documento. Embora você possa ter vários TextSelection objetos em um documento, todos eles referem visível mesma seleção e todos eles têm a mesma posição. Você pode ter quantos EditPoint2 objetos como você deseja, e eles podem ter diferentes posições.
Os métodos de TextSelection projetados para uma correspondência direta às ações do usuário enquanto os métodos do objeto EditPoint2 são não. Como resultado, alguns EditPoint2 métodos fazem coisas que nenhum TextSelection método pode ser feito, enquanto outros EditPoint2 métodos são mais granulares em função de TextSelection métodos. Também é a razão que TextSelection é mais rica em Propriedades e métodos que EditPoint2.
Usando esses objetos, você pode:
Selecionar, adicionar, excluir e mover o texto no buffer ou no modo de exibição.
Mova o ponto de inserção ao redor do buffer ou modo de exibição.
Recue o texto em buffer ou o modo de exibição.
Inserir, remover e navegue até a indicadores.
Adicionar ou remover o texto, incluindo o espaço em branco.
Localizar ou substituir o texto com base em um padrão especificado.
Crie uma seção de estrutura de tópicos no código e texto.
Consultar informações sobre o texto, como, por exemplo, a posição de texto, superior e inferior do documento, os intervalos de texto selecionado e assim por diante.
Os exemplos de macro a seguir demonstram como referência e usar os vários membros do modelo de automação do Editor. Para obter mais informações sobre como executar o código de exemplo, consulte How to: Compilar e executar os exemplos de código de modelo de objeto de automação.
Para obter exemplos adicionais que demonstra o uso do modelo de automação do Editor, consulte a macro de verificação ortográfica e outros exemplos em amostras de automação para Visual Studio (https://msdn2.microsoft.com/en-us/vstudio/aa718336.aspx) site da Web.
Observação |
---|
Caixas de diálogo e comandos de menu que você vê podem diferir das descritas no Help dependendo de suas configurações ativas ou 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. |
HTMLWindow3, vsHTMLPanes e vsHTMLViews foram adicionadas com a introdução do modo de exibição de divisão na Visual Studio 2008 editor de HTML. Modo divisão separa a guia e exibir a janela de edição de elementos do HTML. Alternar o modo de exibição (para Design ou código-fonte) não significa necessariamente alternando a guia (divisão/Design/origem). Por exemplo, quando você clica na guia de divisão, alternar modos de exibição entre Design e fonte não altera a guia, somente ativa ou desativa as partes de origem e de Design no modo de exibição de divisão.
Exemplo
Exemplo de macro para ActivePoint. Este exemplo também ilustra o uso de StartOfLine, DisplayColumn, e EndOfLine. Antes de executar este exemplo, abrir um arquivo de código ou de um documento de texto em Visual Studio, adicione algum texto a ele e selecione parte do texto.
' Macro example for TextSelection.ActivePoint.
'
Sub ActivePointExample()
' Before running this example, open a text document.
Dim objSel As TextSelection = DTE.ActiveDocument.Selection
Dim objActive As VirtualPoint = objSel.ActivePoint
' Collapse the selection to the beginning of the line.
objSel.StartOfLine()
' objActive is "live", tied to the position of the actual
' selection, so it will reflect the new position.
Dim iCol As Long = objActive.DisplayColumn
' Move the selection to the end of the line.
objSel.EndOfLine()
MsgBox("The length of the insertion point line is " & _
(objActive.DisplayColumn - iCol) & " display characters.")
End Sub
Exemplo de macro para AnchorPoint. Este exemplo também ilustra o uso de DisplayColumn, Line, StartOfDocument e EndOfDocument. Antes de executar este exemplo, abrir um arquivo de código ou de um documento de texto em Visual Studio, adicione algum texto a ele e selecione parte do texto.
' Macro example for TextSelection.AnchorPoint.
'
Sub AnchorPointExample()
' Before running this example, open a text document.
Dim objSel As TextSelection = DTE.ActiveDocument.Selection
Dim objAnchor As VirtualPoint = objSel.AnchorPoint
' objAnchor is "live", tied to the position of the actual
' selection, so it will reflect changes. iCol and iRow are created
' here to save a "snapshot" of the anchor point's position at this
' time.
Dim iCol As Long = objAnchor.DisplayColumn
Dim iRow As Long = objAnchor.Line
' As the selection is extended, the active point moves but the
' anchor point remains in place.
objSel.StartOfDocument(True)
objSel.EndOfDocument(True)
If (iCol = objAnchor.DisplayColumn And iRow = objAnchor.Line) Then
MsgBox("The anchor point has remained in place at row " & _
iRow & ", display column " & iCol)
End If
End Sub
Exemplo de macro para Insert. Este exemplo também ilustra o uso de IsEmpty, WordLeft, WordRight, Text, Delete, e MoveToPoint. Antes de executar este exemplo, você abre um arquivo de código ou de um documento de texto em Visual Studio e adicionar algum texto para o proprietário.
' Macro example for TextSelection.Insert.
'
Sub InsertExample()
' Before running this example, open a text document.
Dim objSel As TextSelection = DTE.ActiveDocument.Selection
If objSel.IsEmpty Then
' If there is no text selected, swap the words before and after
' the insertion point. We begin by selecting the word before
' the insertion point.
objSel.WordLeft(True)
If Not objSel.IsEmpty Then
' We can continue only if the selection was not already at
' the beginning of the document.
Dim strBefore As String = objSel.Text
' The text is saved in strBefore; now delete it and move
' past the following word.
objSel.Delete()
objSel.WordRight(True)
If objSel.Text.StartsWith(" ") Or _
objSel.Text.StartsWith(Microsoft.VisualBasic. _
ControlChars.Tab) Then
' The previous call to WordRight may have skipped some
' white space instead of an actual word. In that case,
' we should call it again.
objSel.WordRight(True)
End If
' Insert the new text at the end of the selection.
objSel.Insert(strBefore, _
vsInsertFlags.vsInsertFlagsInsertAtEnd)
End If
Else
' If some text is selected, replace the following word with the
' selected text.
Dim strSelected As String = objSel.Text
objSel.MoveToPoint(objSel.BottomPoint)
objSel.WordRight(True)
If objSel.Text.StartsWith(" ") Or _
objSel.Text.StartsWith(Microsoft.VisualBasic. _
ControlChars.Tab) Then
' The previous call to WordRight may have skipped some
' white space instead of an actual word. In that case, we
' should call it again.
objSel.WordRight(True)
End If
' Insert the text, overwriting the existing text and leaving
' the selection containing the inserted text.
objSel.Insert(strSelected, _
vsInsertFlags.vsInsertFlagsContainNewText)
End If
End Sub
Exemplo de macro para FindPattern. Este exemplo também ilustra o uso de SelectLine. Antes de executar este exemplo, você precisa abrir um documento de texto ou um arquivo de código em Visual Studio e adicionar algum texto para o proprietário.
' Macro example for TextSelection.FindPattern.
'
Sub FindPatternExample()
' Before running this example, open a text document.
Dim objSel As TextSelection = DTE.ActiveDocument.Selection
' Advance to the next Visual Basic function beginning or end by
' searching for "Sub" with white space before and after it.
If objSel.FindPattern(":WhSub:Wh", _
vsFindOptions.vsFindOptionsRegularExpression) Then
' Select the entire line.
objSel.SelectLine()
End If
End Sub
Exemplo de macro para OutlineSection. This example also illustrates the use of StartOfDocument, Line, LineCharOffset, FindPattern, SwapAnchor, MoveToLineAndOffset and LineDown. Antes de executar este exemplo, abrir um documento de código em Visual Studio que contém um #if _DEBUG…#endif bloco.
' Macro example for TextSelection.OutlineSection.
'
Sub OutlineSectionExample()
' Before running this example, open a code document
' containing a #if _DEBUG…#endif block.
Dim objSel As TextSelection = DTE.ActiveDocument.Selection
' Move to the beginning of the document so we can iterate over the
' whole thing.
objSel.StartOfDocument()
While objSel.FindPattern("#if _DEBUG")
' If we found the beginning of a debug-only section, save the
' position.
Dim lStartLine As Long = objSel.TopPoint.Line
Dim lStartColumn As Long = objSel.TopPoint.LineCharOffset
' Look for the end.
If objSel.FindPattern("#endif") Then
' Select the entire section and outline it.
objSel.SwapAnchor()
objSel.MoveToLineAndOffset(lStartLine, lStartColumn, True)
objSel.OutlineSection()
objSel.LineDown()
End If
End While
End Sub
Exemplo de macro abre um documento de texto e gera uma lista de todos os comandos disponíveis nesse documento.
' Macro example
' This generates a text document listing all available command names.
Sub CommandNamesCollapseExample()
Dim Cmd As Command
Dim Commands As Commands = DTE.Commands
Dim PrjItem As ProjectItem
Dim Doc As Document
Dim TxtDoc As TextDocument
DTE.ItemOperations.NewFile ("General\Text File")
Set Doc = ActiveDocument
Set TxtDoc = Doc.Object("TextDocument")
For Each Cmd In Commands
If (Cmd.Name <> "") Then
TxtDoc.Selection.Text = Cmd.Name & vbLF
TxtDoc.Selection.Collapse
End If
Next
End Sub
Exemplo de macro para HTMLWindow objeto. This example also illustrates the use of ActiveDocument, ActiveWindow, Window, CurrentTab, CurrentTabObject, ActivePane, StartPoint, CreateEditPoint, FindPattern and InsertFromFile. Antes de executar este exemplo, abrir um documento HTML no Visual Studio.
' Macro example for HTMLWindow object
Sub HTMLWindowExample()
' Open an HTML document before running this sample.
If TypeOf ActiveDocument.ActiveWindow.Object Is HTMLWindow Then
' Ask the user for a file to insert into the body of the HTML
' document. This file should be an HTML fragment.
Dim strFile As String = InputBox("Enter the name of a file to _
insert at the end of the HTML document:")
' Get the HTMLWindow object and determin which tab is currently
' active.
Dim objHTMLWin As HTMLWindow = ActiveDocument.ActiveWindow.Object
Dim Tab As vsHTMLTabs = objHTMLWin.CurrentTab
' Switch to the "source" tab.
objHTMLWin.CurrentTab = vsHTMLTabs.vsHTMLTabsSource
' Get an EditPoint at the start of the text.
Dim objTextWin As TextWindow = objHTMLWin.CurrentTabObject
Dim objEP As EditPoint = _
objTextWin.ActivePane.StartPoint.CreateEditPoint
' Look for the end of the document body.
If objEP.FindPattern("</body>") Then
' Insert the contents of the file.
objEP.InsertFromFile(strFile)
End If
' Switch back to the original view of the HTML file.
objHTMLWin.CurrentTab = Tab
Else
MsgBox("You must open an HTML document.")
End If
End Sub
Consulte também
Tarefas
How to: Alterar Características da janela
Walkthrough: Criando um assistente
Conceitos
Outros recursos
Criar e controlar o ambiente Windows