Макрос для обтекания выделенного текста тегами в Visual Studio

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

<strong>My Selected Text</strong>

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


person mattruma    schedule 28.02.2009    source источник


Ответы (3)


Код для этого довольно прост:

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

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

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

Чтобы привязать макрос к кнопке:

  • Нажмите Инструменты-> Настроить ...
  • Щелкните New ..., введите подходящее имя, щелкните OK. Должна быть видна пустая панель инструментов (возможно, вам придется переместить окно, чтобы увидеть ее)
  • Перейдите на вкладку "Команды" и выберите "Макросы" в категориях.
  • Найдите созданные ранее макросы и перетащите их на панель инструментов.
  • Щелкните правой кнопкой мыши кнопки, чтобы изменить настройки (например, отобразить значок вместо текста)
person redwyre    schedule 28.02.2009
comment
Спасибо! Вы сэкономили мне кучу времени! - person mattruma; 28.02.2009
comment
Можете ли вы представить подсказку, какой тег окружать текст? - person SamWM; 27.07.2009
comment
Я просто попробовал это, и если я выделю текст и запустил marco, я получаю два тега ‹/strong› в конце. Я думаю, это потому, что VS.NET выполняет небольшое автозаполнение тегов. Итак, из кода я просто вынул + ‹/strong› на конце, и он отлично работает. Кто-нибудь знает, как отключить эту функцию автозаполнения в макросе, а затем снова включить? - person slolife; 05.08.2009
comment
Сэм, я только что нашел статью (ссылка здесь) на webdevel.blogspot.com/2009/07/, в котором описывается, как в дальнейшем использовать отличный ответ redwyre, чтобы предоставить подсказку, позволяющую указать другие имена тегов, если хотите. Также обратите внимание, я считаю, что теперь это встроено в VS 2010? См. stackoverflow.com/questions/191463 - person Funka; 07.10.2010
comment
Хммм, интересно, Сэм, автор статьи, на которую я ссылаюсь, тот же самый Сэм, для которого я разместил этот комментарий !? - person Funka; 07.10.2010

Я знаю, что это старая тема, но, возможно, кому-то она пригодится.

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

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
person Albert    schedule 07.12.2011

Исходный ответ

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

Пример

Shift+Alt+W > strong > Enter
person djones    schedule 29.04.2016