Wie wird ein Tag in VS-Code verpackt?

191

Ich möchte mein ausgewähltes HTML in ein Tag in VS-Code einschließen. Wie mache ich das?

hannes neukermans
quelle
1
Einer der Gründe, warum ich nicht vollständig auf VSCode umsteigen und Sublime loswerden kann.
Budji
3
@budji Es ist eine integrierte Funktion mit Emmet ... So ziemlich alles, was Sie sich wünschen können, ist jetzt auch eine Erweiterung, und wenn dies nicht der Fall ist, können Sie immer Ihre eigene erstellen.
James Coyle
Ich mag diese Frage und ich kenne einen Erweiterungsaufruf (Emmet Wrap with Abbrevation), aber jeder würde wissen, wie man die umgekehrten Aktionen ausführt. Beispiel: Schreiben Sie zuerst <p> ... </ p> und fügen Sie <u> ** </ u> mit diesem Ergebnis <p> ... <u> ** </ u> ... </ ein p>
Jmainol

Antworten:

387

Embedded Emmet könnte den Trick machen:

  1. Text auswählen (optional)
  2. Befehlspalette öffnen (normalerweise Ctrl+ Shift+ P)
  3. Ausführen Emmet: Wrap with Abbreviation
  4. Geben Sie ein Tag div(oder eine Abkürzung .wrapper>p) ein.
  5. Schlagen Enter

Der Befehl kann einer Tastenkombination zugewiesen werden.

Geben Sie hier die Bildbeschreibung ein


Dieses Ding unterstützt sogar das Übergeben von Argumenten:

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

Verwenden Sie es so:

  • span.myCssClass
  • span#myCssId
  • b
  • b.myCssClass
Alex
quelle
4
Dies sollte die Antwort sein, emmet ist bereits in vscode installiert
Nathan
15
Ctrl+ pist goToFile. Die Befehlspalette ist Ctrl+ Shift+ P.
Alex
1
Für JSX musste dieser zusätzliche Schritt hinzugefügt werden: github.com/Microsoft/vscode/issues/4962#issuecomment-323880988
Gezim
1
Mit VSCode 1.35.0 (und möglicherweise früher) funktioniert dies mit JSX - keine zusätzliche Konfiguration
erforderlich
103

Eine schnelle Suche auf dem VSCode-Marktplatz: https://marketplace.visualstudio.com/items/bradgashler.htmltagwrap .

  1. Starten Sie VS Code Quick Open ( Ctrl+ P)

  2. einfügen ext install htmltagwrapund eingeben

  3. Wählen Sie HTML

  4. Drücken Sie Alt+ W( Option+ Wfür Mac).

hannes neukermans
quelle
Sie meinen wahrscheinlich, wählen Sie Installieren in Schritt 3.
Samir
1
"Wählen Sie zur Verwendung einen Codeabschnitt aus und drücken Sie" Alt + W "(" Option + W "für Mac)." Einfach genug! Nur dass es nicht funktioniert. Ich habe Version 0.0.3 mit VS Code 1.16.1 ausprobiert. Es funktioniert fast . Es wird versucht, die Auswahl in <p></p>Tags zu verpacken , anstatt in die generischen, <div></div>was vernünftiger erscheint. Schlimmer ist, dass es fehlschlägt. Es produziert Ausgabe wie<p><p>My selected text.</p>
Samir
1
Ich habe andere Erweiterungen wie diese ausprobiert. Aber bisher habe ich kein Glück, eine zu finden, die funktioniert. Dieser war einer funktionierenden Lösung am nächsten. Ich habe Wrap 0.0.1 von David Taylor ausprobiert und die Strg + ich habe überhaupt nicht funktioniert.
Samir
1
UPDATE: Die Erweiterung funktioniert jetzt ordnungsgemäß und behebt die oben genannten Probleme. Kein doppeltes Tag mehr, und Sie können jetzt das Tag, das Sie einfügen möchten, über eine Einstellung anpassen. Wenn Sie also möchten, dass das Tag ein Tag ist, <div>fügen Sie die folgende Einstellung hinzu : "htmltagwrap.tag": "div".
bgashler1
Das ist eine ziemlich schlechte Implementierung - funktioniert für einzelne Tags. Es wäre schön, etwas Ähnliches wie das Notepad ++ - HTML-Plugin zu haben, mit dem Sie die Auswahl nach Tag aus Ihrer konfigurierbaren Tag-Auswahl
umbrechen können
38

Da ich keinen Kommentar abgeben kann, werde ich auf Alex 'fantastische Antwort eingehen.

Wenn Sie eine erhabene Erfahrung mit dem Wrapping wünschen, öffnen Sie die Keymap-Erweiterungen (Einstellungen> Keymap-Erweiterungen [ Cmd+ K Cmd+ M]) und fügen Sie das folgende Objekt hinzu:

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

Dadurch wird der Emmet-Wrap-Befehl an Alt+ gebunden, Wwenn Text ausgewählt wird

(Entschuldigung nur für OSX-Anweisungen)

Andrew Lewis
quelle
7
So habe ich eine Verknüpfung hinzugefügt: Einstellungen> Tastenkombinationen; ... dann nach Emmet Wrap suchen; ... auf + klicken, um Ihre Verknüpfung hinzuzufügen; ... :)
Luckylooke
1
Zusätzlich habe ich && resourceLangId == 'html' hinzugefügt, um nur für Webseiten zu funktionieren
surpavan
@surpavan, nett, aber es kann auch nützlich sein, in anderen Dateitypen zB HTML-Vorlagendateien zu haben
Andrew Lewis
1
@AndrewLewis - ja, deshalb habe ich die Sprach-ID und nicht die Dateierweiterung (files.associations) beibehalten.
Surpavan
Shift + Alt + W ist für Windows kostenlos.
Timofeus
31
  1. Öffnen Sie die Tastaturkürzel, indem Sie ⌘ Command+ k ⌘ Command+ soder eingebenCode > Preferences > Keyboard Shortcuts
  2. Art emmet wrap
  3. Klicken Sie auf das Pluszeichen links neben "Emmet: Wrap with Abbreviation".
  4. Geben Sie ⌥ Option+ einw
  5. Drücken Sie Enter
Adam Gonzales
quelle
5

Imo gibt es eine bessere Antwort darauf mit Snippets

Erstellen Sie ein Snippet mit einer Definition wie folgt:

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

Binden Sie es dann an einen Schlüssel in keybindings.json. Beispiel:

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

Ich denke, dies sollte genau das gleiche Ergebnis wie htmltagwrap liefern, ohne jedoch eine Erweiterung installieren zu müssen.

Es werden Tags um den ausgewählten Text eingefügt, standardmäßig wird das <b>Tag markiert und das Tag ausgewählt, sodass Sie es durch Eingabe ändern können.

Wenn Sie ein anderes Standard-Tag verwenden möchten, ändern Sie einfach bdie bodyEigenschaft des Snippets.

Unifex
quelle
Dies ist in Ordnung, aber Emmet kann dies und vieles mehr, z. B. das Generieren von verschachteltem HTML, Attributen und Listen. Emmet wird sofort mit VS-Code geliefert.
Andrew Lewis
1
Ich verstehe die Abstimmungen nicht. Natürlich ist Emmet komplexer und ich kann viele Dinge tun, aber zum Umschließen einer Textauswahl mit einem Tag ist diese Lösung großartig! Wenn Sie einwickeln, müssen Sie Ihre Augen nicht zum oberen Teil Ihres Bildschirms / Fensters bewegen. Es passiert genau dort, wo Sie schon waren, weil Sie den Text ausgewählt haben! Es ist ein ziemlich häufiger Anwendungsfall und eine schnelle Lösung mit einer geringen Laufzeit!
Andrei V
Ich war sehr aufgeregt darüber, aber ich konnte es nicht zum
Laufen bringen
3

Mit VSCode 1.47+ können Sie dazu einfach OPT-w verwenden.

Dies ist der einfachste Weg, die integrierte Funktionalität zum Auslösen von Emmet zu verwenden:

  1. Wählen Sie Ihren Text / HTML.
  2. Option+w
  3. Im emmetFenster in der Befehlspalette geöffnet, geben Sie in dem Tag oder in der Verpackung Code , den Sie benötigen.
  4. Enter
  5. Voila
Tony Brasunas
quelle
1
Ich habe nicht festgestellt, dass dies für 1.47.3 unter Mac OS der Fall ist. Ich musste die Tastenkombination für Opt + w hinzufügen, wie in den anderen Antworten vorgeschlagen.
Bloße Entwicklung
Arbeitete für mich sofort. Ich bin mir nicht sicher, warum du es nicht tun würdest. Vielleicht haben Sie ein Plug-In installiert, das die Verknüpfung überschrieben hat?
Tony Brasunas
0

Viele Befehle sind bereits an simple ctrl+ angehängt [key]. Sie können auch akkordische Tastenkombinationen wie ctrl a+ ausführen b.

(Falls Sie zum ersten Mal etwas über akkordierte ctrlTastenkombinationen lesen: Sie funktionieren, indem Sie die Taste nicht loslassen und nach der ersten eine zweite Taste drücken.)

Ich habe meine Emmet: Wrap with AbbreviationBindung an (( ctrl) ( w+ a)).

In Windows: Datei> Einstellungen> Tastaturkürzel (( ctrl) ( k+ s))> Nach Wrap mit Abkürzung suchen> Doppelklicken> Kombination hinzufügen.

I_Literally_Cannot
quelle