Как обернуть выделение тегом HTML в Visual Studio?

Это похоже на самый главный вопрос в мире, но проклятый, если я смогу найти ответ.

Есть ли ярлык на клавиатуре, либо родной для Visual Studio, либо с помощью Code Rush или другого стороннего плагина, чтобы обернуть текущий выбор тегом HTML? Я устал печатать открывающий тег, вырезая неулокальный закрывающий тег в буфер обмена, перемещая курсор и вставляя его в конец, где он принадлежит.

Обновление: Так TextMate обрабатывает окружение выделения тегом. Честно говоря, я ошеломлен тем, что Visual Studio, похоже, не имеет подобной функции. Создание макроса или фрагмента для каждого мыслимого тега, который я могу использовать, кажется абсурдным.

Ответ 1

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

ОБНОВИТЬ

Этот ярлык доступен также в Visual Studio 2017, но у вас должна быть установлена рабочая нагрузка "ASP.NET и веб-разработка".

пример

Shift+Alt+W > p > Enter

Ответ 2

Я знаю, что это уже давно, и вы, вероятно, нашли ответ, но я просто хотел бы добавить ради тех, кто может не знать, что это возможно в VS 2010:

  • Выберите код, который вы хотите окружить.
  • Сделайте ctrl-k ctrl-s (или щелкните правой кнопкой мыши и выберите Surround with....
  • Существует множество фрагментов HTML, которые можно выбрать.

Вы можете создать свои собственные SurroundsWith фрагменты, если вы не найдете то, что ищете:

  • Нажмите File, а затем нажмите New и выберите тип файла XML.
  • В меню File нажмите Save.
  • В поле Save as выберите All Files (*.*).
  • В поле File name введите имя файла с расширением имени файла .snippet.
  • Нажмите Save.

Введите что-то вроде следующего примера в файле XML:

<CodeSnippet Format="1.1.0" xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <Header>
    <Title>ul-div</Title>
    <Author>Microsoft Corporation</Author>
    <Shortcut>ul>li</Shortcut>
    <Description>Wrap in a ul and then an li</Description>
    <SnippetTypes>
      <SnippetType>Expansion</SnippetType>
      <SnippetType>SurroundsWith</SnippetType>
    </SnippetTypes>
  </Header>
  <Snippet>
    <Declarations>
      <Literal>
        <ID>selected</ID>
        <ToolTip>content</ToolTip>
        <Default>content</Default>
      </Literal>
    </Declarations>
    <Code Language="html"><![CDATA[<ul><li>$selected$</li></ul>$end$]]></Code>
  </Snippet>
</CodeSnippet>
  • Откройте Tools > Code Snippets Manager.
  • Нажмите Import и перейдите к только что созданному фрагменту.
  • Отметьте My HTML Snippets и нажмите Finish, а затем OK.

После этого вы получите свой блестящий новый HTML-фрагмент, который можно будет обернуть!

Ответ 4

Ctrl-X → Тип тегов → Ctrl-V по-прежнему является самым быстрым решением, которое я видел, как упоминалось в этом ответе: fooobar.com/questions/70997/....

Ответ 5

Я знаю, что это древняя тема, но я столкнулся с проблемой, которую я, наконец, собрал, чтобы сделать свой собственный, и поскольку это один из первых результатов в Google, я решил, что люди могут найти это полезным.

На самом деле это было довольно просто, я просто скопировал из существующего фрагмента HTML и перемещался по литералам. Следующий фрагмент будет окружен общим тегом HTML, он предложит тег и поместит его как в открывающие, так и закрывающие теги.

<CodeSnippet Format="1.1.0" xmlns="http://schemas.microsoft.com/VisualStudio/2005/CodeSnippet">
  <!-- Generic HTML Snippet -->
  <Header>
    <Title>Html</Title>
    <Author>Liam Slater</Author>
    <Shortcut>h</Shortcut>
    <Description>Markup snippet for HTML</Description>
    <SnippetTypes>
      <SnippetType>SurroundsWith</SnippetType>
    </SnippetTypes>
  </Header>
  <Snippet>
    <Declarations>
      <Literal>
        <ID>tag</ID>
        <ToolTip>tag</ToolTip>
        <Default></Default>
      </Literal>
      <Literal>
        <ID>selected</ID>
        <ToolTip>content</ToolTip>
        <Default>content</Default>
      </Literal>
    </Declarations>
    <Code Language="html"><![CDATA[<$tag$>$selected$</$tag$>$end$]]></Code>
  </Snippet>
</CodeSnippet>

Ответ 6

Когда вы сталкиваетесь с этой ситуацией, я часто печатаю закрывающий тег, а затем открывающий тег. Это предотвращает "помощь" IDE, вставляя закрывающий тег, где я его не хочу. Я также заинтересован в лучшем решении.

Ответ 7

Для тех, кто использует Visual Studio 2017: щелкните правой кнопкой мыши по области html/cshtml или выберите некоторые элементы для обертывания, есть кнопка Wrap With <div> в списке. введите описание изображения здесь

Ответ 8

Ничего я не знаю, но писать макрос, чтобы обернуть его в любой тег, который вы хотите, не должно быть трудным. У меня есть аналогичный, который будет охватывать мой выбор в блоке области.