Jak wykonać zawijanie tagów w kodzie VS?


170

Chciałbym zawinąć wybrany kod HTML w tagu w kodzie VS. W jaki sposób mogę to zrobić?


1
Jednym z powodów, dla których nie mogę całkowicie przejść do VSCode i porzucić Sublime.
budji

3
@budji To wbudowana funkcja w emmet ... Prawie wszystko, czego możesz chcieć, jest teraz również rozszerzeniem, a jeśli nie, zawsze możesz stworzyć własne.
James Coyle

Podoba mi się to pytanie i znam i dzwonię do numeru wewnętrznego (Emmet Wrap with Abbrevation), ale każdy wiedziałby, jak wykonać odwrotne działania. Na przykład: napisz najpierw <p> ... </p> i uwzględnij wewnątrz <u> ** </u> z tym wynikiem <p> ... <u> ** </u> ... </ p>
Jmainol

Odpowiedzi:


342

Wbudowany Emmet może załatwić sprawę:

  1. Wybierz tekst (opcjonalnie)
  2. Otwórz paletę poleceń (zwykle Ctrl+ Shift+ P)
  3. Wykonać Emmet: Wrap with Abbreviation
  4. Wpisz tag div(lub skrót .wrapper>p)
  5. Trafienie Enter

Polecenie można przypisać do przypisania klawiszowego.

wprowadź opis obrazu tutaj


Ta rzecz obsługuje nawet przekazywanie argumentów:

{
    "key": "ctrl+shift+9",
    "command": "editor.emmet.action.wrapWithAbbreviation",
    "when": "editorHasSelection",
    "args": {
        "abbreviation": "span"
    }
},

Użyj tego w ten sposób:

  • span.myCssClass
  • span#myCssId
  • b
  • b.myCssClass


4
To powinna być odpowiedź, emmet jest już zainstalowany w vscode
Nathan

15
Ctrl+ pto goToFile. Paleta poleceń to Ctrl+ Shift+ P.
Alex,

1
W przypadku JSX musiałem dodać ten dodatkowy krok: github.com/Microsoft/vscode/issues/4962#issuecomment-323880988
Gezim

1
Z VSCode 1.35.0 (i prawdopodobnie wcześniej) działa to z JSX - nie ma potrzeby dodatkowej konfiguracji
davnicwil

98

Szybkie wyszukiwanie na rynku VSCode: https://marketplace.visualstudio.com/items/bradgashler.htmltagwrap .

  1. Uruchom VS Code Quick Open ( Ctrl+ P)

  2. wklej ext install htmltagwrapi wprowadź

  3. wybierz HTML

  4. naciśnij Alt+ W( Option+ Wdla Mac).


Prawdopodobnie masz na myśli opcję Instaluj w kroku 3.
Samir

1
„Aby użyć, wybierz fragment kodu i naciśnij„ Alt + W ”(„ Option + W ”na Macu).” Wystarczająco proste! Tylko że to nie działa. Próbowałem wersji 0.0.3 z VS Code 1.16.1. To prawie działa. Próbuje zawinąć zaznaczenie w <p></p>tagi, a nie ogólne, <div></div>co wydaje się bardziej rozsądne. Co gorsza, zawodzi. Daje wyniki podobne do<p><p>My selected text.</p>
Samir

1
Próbowałem innych takich rozszerzeń. Ale jak dotąd nie mam szczęścia w znalezieniu takiego, który działa. Ten był najbliższy działającego rozwiązania. Próbowałem zawinąć 0.0.1 Davida Taylora, a Ctrl + i w ogóle nie działał.
Samir

1
UPDATE: rozszerzenie działa teraz poprawnie i rozwiązuje powyższe problemy. Koniec ze zduplikowanymi tagami, a teraz możesz dostosować tag, który chcesz wstawić, za pomocą ustawienia. Więc jeśli chcesz tag się <div>dodać następujące ustawienia "htmltagwrap.tag": "div".
bgashler1

to dość słaba implementacja - działa dla pojedynczego tagu, fajnie byłoby mieć coś podobnego do wtyczki notepad ++ html, w której można zawijać zaznaczenie tagiem z konfigurowalnego wyboru tagu
Sasha Bond

37

Ponieważ nie mogę komentować, rozwinę fantastyczną odpowiedź Alexa.

Jeśli chcesz doświadczyć Sublime z zawijaniem, otwórz rozszerzenia mapy klawiszy (Preferencje> Rozszerzenia mapy klawiszy [ Cmd+ K Cmd+ M]) i dodaj następujący obiekt:

{
    "key": "alt+w",
    "command": "editor.emmet.action.wrapIndividualLinesWithAbbreviation",
    "when": "editorHasSelection && editorTextFocus"
}

Co spowoduje powiązanie polecenia zawijania Emmeta z Alt+ Wpo zaznaczeniu tekstu

(Przepraszamy za instrukcje tylko dla OSX)


7
To jest jak dodałem skrót: Preferencje> Keyamp Skróty; ... potem szukać Emmet wrap; ... kliknij + aby dodać skrót; ... :)
Luckylooke

1
dodatkowo dodałem && resourceLangId == 'html' do pracy tylko ze stronami internetowymi
surpavan

@surpavan, fajnie, ale może być również przydatny w innych typach plików, np. plikach szablonów html
Andrew Lewis

1
@AndrewLewis - tak, dlatego zachowałem to na id języka, a nie rozszerzenie pliku (files.associations).
surpavan

Shift + Alt + W jest bezpłatny dla systemu Windows.
Timofeus

24
  1. Otwórz skróty klawiaturowe, wpisując ⌘ Command+ k ⌘ Command+ slubCode > Preferences > Keyboard Shortcuts
  2. Rodzaj emmet wrap
  3. Kliknij znak plusa po lewej stronie „Emmet: Zawijaj skrótem”
  4. Wpisz ⌥ Option+w
  5. naciśnij Enter

3

imo istnieje lepsza odpowiedź na to za pomocą Snippets

Utwórz fragment z taką definicją:

"name_of_your_snippet": {
    "scope": "javascript,html",
    "prefix": "name_of_your_snippet",
    "body": "<${0:b}>$TM_SELECTED_TEXT</${0:b}>"
}

Następnie powiąż go z klawiszem w keybindings.json Np. W ten sposób:

{ 
    "key": "alt+w",
    "command": "editor.action.insertSnippet",
    "args": { "name": "name_of_your_snippet" }
}

Myślę, że powinno to dać dokładnie taki sam wynik jak htmltagwrap, ale bez konieczności instalowania rozszerzenia.

Wstawi tagi wokół zaznaczonego tekstu, domyślnie oznacza <b>tag i wybiera tag, więc wpisanie pozwala go zmienić.

Jeśli chcesz użyć innego domyślnego tag wystarczy zmienić bw bodymieniu fragmencie.


To jest w porządku, ale Emmet może to zrobić i wiele więcej, na przykład generować zagnieżdżony kod HTML, atrybuty i listy. Emmet wychodzi z pudełka z kodem VS.
Andrew Lewis

Nie rozumiem głosów przeciw. Oczywiście Emmet jest bardziej złożony i mogę zrobić wiele rzeczy, ale do zawijania zaznaczenia tekstu tagiem to rozwiązanie jest świetne! Podczas owijania nie musisz przenosić oczu na górną część ekranu / okna. Dzieje się to właśnie tam, gdzie już byłeś, ponieważ wybrałeś tekst! To dość powszechny przypadek użycia i szybkie rozwiązanie o krótkim czasie działania!
Andrei V

Byłem tym bardzo podekscytowany, ale nie mogłem sprawić, żeby zadziałało: /
Icaro
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.