Як обернути виділення тегом HTML у Visual Studio?


110

Це здається найосновнішим питанням у світі, але проклятим, якщо я можу знайти відповідь.

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

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


Ви можете записати макрос таким чином, щоб він запропонував тегу обернути виділення. Я можу викопати свій макрос, якщо хочете?
Ян Джейкобс

Хтось ще знайшов спосіб це зробити?
SamWM

Відповіді:


132

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

ОНОВЛЕННЯ

Цей ярлик доступний і у Visual Studio 2017, але у вас має бути встановлено навантаження "ASP.NET та веб-розробка".

Приклад

Shift+Alt+W > p > Enter

Досі застосовується у VS2017
Zze

не працює для мене в VS 2017. Я думаю, що це працює лише у тому випадку, якщо у вас є основні веб-сторінки.
RayLoveless

1
@RayLoveless ctrl-k ctrl-s працює для мене, щоб оточити фрагмент. Однак ваш вибір повинен виходити зі списку фрагментів (без div), і фрагменти надають додаткові поля для редагування, які порушують робочий процес, детально описаний вище. Можна сперечатися за спеціальні фрагменти, але я віддаю перевагу нестандартним рішенням!
D-Jones

1
@WildJoe, який файл у вас відкритий? якщо випадково це файл XML або Xaml, я не впевнений, що це спрацює, оскільки я вважаю, що це працює лише для редакторів HTML.
Д-Джонс

1
@WildJoe подивитися тут stackoverflow.com/a/34799783/1647159 і тут stackoverflow.com/a/22274313/1647159 Увага, ви могли б у кінцевому підсумку з деградованих досвідом
D-Джонс

65

Я знаю, що це старе, і ви, напевно, вже знайшли відповідь, але я просто хотів би додати заради тих, хто, можливо, не знає, що це можливо в VS 2010:

  1. Виберіть код, яким ви хочете оточити.
  2. Зробіть ctrl-k ctrl-s(або клацніть правою кнопкою миші та виберіть Surround with....
  3. Існує безліч фрагментів HTML на вибір.

Ви можете створити власні фрагменти SurroundsWith, якщо ви не знайдете те, що шукаєте:

  1. Клацніть, Fileа потім клацніть Newта виберіть тип файлу XML.
  2. У Fileменю натисніть кнопку Save.
  3. У Save asполі виберіть All Files (*.*).
  4. У File nameполі введіть ім'я .snippetфайлу з розширенням імені файлу.
  5. Клацніть 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>
  1. Відкрити Tools> Code Snippets Manager.
  2. Клацніть Importта перейдіть до фрагменту, який ви щойно створили.
  3. Перевірте My HTML Snippetsта натисніть, Finishа потім OK.

Тоді ви отримаєте новий блискучий фрагмент HTML для вставки матеріалів!


2
Коли ви говорите "Клацніть XML-файл, а потім натисніть кнопку" Відкрити ". Що ви маєте на увазі? натисніть який XML-файл?
Користувач

Це чудова порада! Чи знаєте ви реверс? Як можна видалити навколишні теги?
Тріо Чен

@User ... Я зараз це виправляю. Він не повинен говорити "Клацніть XML-файл ...", просто "Клацніть файл ...".
Watki02

3
це працює, але це не зовсім ярлик, скоріше скорочення
Pixelomo

@AlanSutherland Перший раз, коли ви його налаштували, так. Після його налаштування це проста тема ctrl-k ctrl-s та вибору шаблону.
Бредлі Маунтфорд



8

Я знаю, що це давня нитка, але, зіткнувшись з проблемою, я нарешті вирішив зробити своє, і оскільки це один з перших результатів в 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>

7

Зіткнувшись із цією ситуацією, я часто набираю спочатку тег закриття, а потім тег відкриття. Це не дозволяє IDE "допомагати", вставляючи тег закриття там, де я цього не хочу. Мені також цікаво краще рішення.


3
+1. Воістину дивовижно, наскільки це складно для такої простої функції.
Джон Харгров

Майже через 8 років я все ще використовую те саме
Джек

7

Для тих, хто використовує Visual Studio 2017: Клацніть правою кнопкою миші на html/ cshtmlобласть або виберіть деякі елементи для обгортання, Wrap With <div>у списку є кнопка. введіть тут опис зображення


1
Це дублікат обраної на даний момент відповіді (з використанням shift+alt+w).
Zze

Що мені робити тоді? До речі, у Visual Studio 2015 не було такого елемента інтерфейсу, як я показав у своїй відповіді, коли писав, я просто хотів показати, що є елемент інтерфейсу, щоб зробити те саме за допомогою кліків миші у Visual Studio 2017.
Бурак Каракуш

2

Нічого мені не відомо, але писати макрос, щоб загорнути його в потрібний тег, не повинно бути важким. У мене є аналогічний, який оберне мій вибір у регіоні.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.