Макрос для обтекания выделенного текста тегами в Visual Studio - PullRequest
8 голосов
/ 28 февраля 2009

Я понимаю, что могу быть немного ленивым, но кто-нибудь знает макрос Visual Studio, где я могу выделить какой-то текст внутри Visual Studio IDE, щелкнуть по кнопке и заставить его обернуть выделенный текст тегами ? Это сгенерирует что-то вроде:

<strong>My Selected Text</strong>

Я бы даже хотел создать макрос, но не уверен, с чего начать!

Ответы [ 4 ]

13 голосов
/ 28 февраля 2009

Код для этого достаточно прост:

Sub SurroundWithStrongTag()
    DTE.ActiveDocument.Selection.Text = "<strong>" + DTE.ActiveDocument.Selection.Text + "</strong>"
End Sub

Теперь, если вы не знаете много о макросах, вот как это добавить:

  • Сначала вам нужно открыть IDE макросов, нажать Инструменты-> Макросы-> Макросы IDE ...
  • Далее мы добавим модуль для ваших пользовательских макросов. Щелкните правой кнопкой мыши «MyMacros» в Project Explorer, нажмите «Добавить-> Добавить модуль ...», введите соответствующее имя и нажмите «Добавить».
  • Теперь вставьте функцию внутри модуля, делая копии для любых других тегов, которые вы хотите
  • Сохраните и закройте макрос IDE

Чтобы подключить макрос к кнопке:

  • Нажмите Инструменты-> Настроить ...
  • Нажмите Новый ..., введите соответствующее имя, нажмите ОК. Пустая панель инструментов должна быть видна (возможно, вам придется переместить окно, чтобы увидеть ее)
  • Перейдите на вкладку «Команды» и выберите «Макросы» в категориях
  • Найдите макросы, созданные ранее, и перетащите их на панель инструментов
  • Щелкните правой кнопкой мыши кнопки, чтобы изменить настройки (например, отобразить значок вместо текста)
2 голосов
/ 07 декабря 2011

Я знаю, что это старая тема, но, возможно, кто-то найдет это полезным.

У меня есть следующие настройки:

Sub WrapInH1()
    WrapInTag("h1")
End Sub

Sub WrapInP()
    WrapInTag("p")
End Sub

Sub WrapInStrong()
    WrapInTag("strong")
End Sub

Sub WrapInTag()
    WrapInTag("")
End Sub

Sub WrapInTag(ByVal tagText As String)
    EnableAutoComplete(False)

    If tagText.Length = 0 Then
        tagText = InputBox("Enter Tag")
    End If

    Dim text As String
    text = DTE.ActiveDocument.Selection.Text
    text = Regex.Replace(text, vbCrLf & "$", "") 'Remove the vbCrLf at the end of the line, for when you select the line by clicking in the margin, otherwise your closing tag ends up on it's own line at the end...

    DTE.ActiveDocument.Selection.Text = "<" & tagText & ">" & text & "</" & tagText & ">" & vbCrLf
    EnableAutoComplete(True)
End Sub

Private Sub EnableAutoComplete(ByVal enabled As Boolean)
    Dim HTMLprops As Properties
    Dim aProp As EnvDTE.Property
    HTMLprops = DTE.Properties("Texteditor", "HTML Specific")
    aProp = HTMLprops.Item("AutoInsertCloseTag")
    aProp.Value = enabled
End Sub
1 голос
/ 29 апреля 2016

Оригинальный ответ

Если вам нужно готовое решение, Visual Studio 2015 поставляется с новым ярлыком, Shift + Alt + W заключает текущий выбор в div. Этот ярлык оставляет выделенный текст «div», что делает его легко заменяемым на любой желаемый тег. Это в сочетании с автоматической заменой концевой метки обеспечивает быстрое решение.

Пример

Shift+Alt+W > strong > Enter
1 голос
/ 08 февраля 2010
Dim HTMLprops As Properties = DTE.Properties("Texteditor", "HTML Specific")

Dim aProp As EnvDTE.Property = HTMLprops.Item("AutoInsertCloseTag")

aProp.Value = False
...