Jak otoczyć zaznaczenie tagiem HTML w programie Visual Studio?

110

Wydaje się, że jest to najbardziej podstawowe pytanie na świecie, ale niech mnie diabli, jeśli znajdę odpowiedź.

Czy istnieje skrót klawiaturowy, natywny dla programu Visual Studio lub przez Code Rush lub inną wtyczkę innej firmy, aby opakować bieżący wybór tagiem HTML? Mam dość wpisywania otwierającego tagu, wycinania niewłaściwie umieszczonego tagu zamykającego do schowka, przesuwania kursora i wklejania go na końcu, gdzie należy.

Aktualizacja: w ten sposób TextMate obsługuje otaczanie zaznaczenia tagiem . Szczerze mówiąc, jestem zdumiony, że Visual Studio nie ma podobnej funkcji. Tworzenie makra lub fragmentu kodu dla każdego możliwego tagu, którego mógłbym chcieć użyć, wydaje się absurdalne.

dansays
źródło
Możesz napisać makro w taki sposób, że zapyta o tag, którym chcesz zawinąć zaznaczenie. Mogę wykopać moje makro, jeśli chcesz?
Ian Jacobs
Czy ktoś znalazł już sposób, aby to zrobić?
SamWM

Odpowiedzi:

132

Program Visual Studio 2015 zawiera nowy skrót, Shift + Alt + W, który otacza bieżące zaznaczenie elementem div. Ten skrót pozostawia zaznaczony tekst „div”, dzięki czemu można go płynnie zmienić na dowolny pożądany znacznik. To w połączeniu z automatyczną wymianą znaczników końcowych stanowi szybkie rozwiązanie.

AKTUALIZACJA

Ten skrót jest również dostępny w programie Visual Studio 2017, ale musi być zainstalowane obciążenie „ASP.NET i programowanie w sieci Web”.

Przykład

Shift+Alt+W > p > Enter
D-Jones
źródło
Nadal ma zastosowanie w VS2017.
Zze,
nie działa dla mnie w VS 2017. Myślę, że działa to tylko wtedy, gdy masz podstawowe funkcje internetowe.
RayLoveless
1
@RayLoveless ctrl-k ctrl-s działa dla mnie, aby otoczyć fragmentem. Jednak wybór musi pochodzić z listy fragmentów (bez elementów div), a fragmenty zawierają dodatkowe pola do edycji, które przerywają przepływ pracy opisany powyżej. Można by argumentować za niestandardowymi fragmentami, ale ja wolę nieszablonowe rozwiązania!
D-Jones
1
@WildJoe jaki rodzaj pliku masz otwarty? jeśli przypadkowo jest to plik xml lub xaml, nie jestem pewien, czy to zadziała, ponieważ uważam, że działa to tylko w przypadku edytorów HTML.
D-Jones
1
@WildJoe patrz tutaj stackoverflow.com/a/34799783/1647159 i tutaj stackoverflow.com/a/22274313/1647159 Ostrzeżenie, możesz skończyć z gorszym doświadczeniem
D-Jones
65

Wiem, że to jest stare i prawdopodobnie już znalazłeś odpowiedź, ale dla dobra tych, którzy mogą tego nie wiedzieć, jest to możliwe w VS 2010:

  1. Wybierz kod, który chcesz otoczyć.
  2. Zrób ctrl-k ctrl-s(lub kliknij prawym przyciskiem myszy i wybierz Surround with....
  3. Do wyboru jest wiele fragmentów kodu HTML.

Możesz stworzyć własne otoczenie z fragmentami, jeśli nie znajdziesz tego, czego szukasz:

  1. Kliknij, Filea następnie kliknij Newi wybierz typ pliku XML.
  2. W Filemenu kliknij Save.
  3. W Save aspolu wybierz All Files (*.*).
  4. W File namepolu wprowadź nazwę pliku z .snippetrozszerzeniem nazwy pliku.
  5. Kliknij Save.

Wpisz w pliku XML coś podobnego do następującego przykładu:

<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. Otwórz Tools> Code Snippets Manager.
  2. Kliknij Importi przejdź do właśnie utworzonego fragmentu.
  3. Sprawdź My HTML Snippetsi kliknij, Finisha następnie OK.

Będziesz mieć wtedy dostępny nowy, błyszczący fragment kodu HTML do pakowania rzeczy!

Bradley Mountford
źródło
2
Gdy powiesz „Kliknij plik XML, a następnie kliknij przycisk Otwórz”. Co masz na myśli? kliknij jaki plik xml?
Użytkownik
To świetna wskazówka! Czy znasz odwrotność? Jak usunąć otaczające tagi?
Trio Cheung
@User ... Naprawiam to teraz. Nie powinno być napisane „Kliknij plik XML ...”, tylko „Kliknij plik ...”.
Watki02,
3
to działa, ale nie jest to do końca skrót, raczej długa droga
Pixelomo
@AlanSutherland Przy pierwszej konfiguracji, tak. Po skonfigurowaniu wystarczy ctrl-k ctrl-si wybrać szablon.
Bradley Mountford
42

Jeśli masz zainstalowane oprogramowanie Web Essentials , możesz użyć Shift + Alt + W, aby otoczyć zaznaczenie tagiem.

zhech
źródło
6
Wspaniałą rzeczą, o której warto o tym wspomnieć, jest to, że potrzebujesz tylko podświetlenia tagu lub nawet umieszczenia kursora wewnątrz tagu. Nie ma potrzeby jawnego zaznaczania tekstu.
Alex KeySmith
8

Wiem, że to starożytny wątek, ale gdy natknąłem się na problem, w końcu udało mi się stworzyć własny, a ponieważ jest to jeden z pierwszych wyników w Google, pomyślałem, że ludzie mogą uznać to za przydatne.

Właściwie to było całkiem proste, po prostu skopiowałem z istniejącego fragmentu kodu HTML i przestawiłem się po literałach. Poniższy fragment zostanie otoczony ogólnym znacznikiem HTML, zapyta o tag i umieści go zarówno w otwierającym, jak i zamykającym tagu.

<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>
Chao
źródło
7

W takiej sytuacji często najpierw wpisuję tag zamykający, a następnie otwierający. Zapobiega to „pomaganiu” IDE przez wstawianie zamykającego znacznika tam, gdzie go nie chcę. Interesuje mnie też lepsze rozwiązanie.

tvanfosson
źródło
3
+1. Naprawdę niesamowite, jak skomplikowane jest to w przypadku tak prostej funkcji.
John Hargrove
Prawie 8 lat później nadal używam tego samego
Jack
7

Dla tych, którzy używają programu Visual Studio 2017: kliknij prawym przyciskiem myszy html/ cshtmlobszar lub wybierz elementy do zawinięcia, Wrap With <div>na liście znajduje się przycisk. wprowadź opis obrazu tutaj

Burak Karakuş
źródło
1
To jest duplikat aktualnie wybranej odpowiedzi (używając shift+alt+w).
Zze,
Więc co powinienem zrobić? Nawiasem mówiąc, Visual Studio 2015 nie miał takiego elementu UI, jaki pokazałem w mojej odpowiedzi, gdy pisałem, chciałem tylko pokazać, że istnieje element UI, który robi to samo za pomocą kliknięć myszą w Visual Studio 2017.
Burak Karakuş
2

Nic, czego nie jestem świadomy, ale napisanie makra, aby zawinąć go w dowolny tag, nie powinno być trudne. Mam podobny, który zawinie mój wybór w bloku regionu.

Ian Jacobs
źródło