Come eseguire il wrapping dei tag nel codice VS?


170

Vorrei racchiudere il mio html selezionato all'interno di un tag nel codice VS. Come lo faccio?


1
Uno dei motivi per cui non riesco a spostarmi completamente su VSCode e abbandonare Sublime.
budji,

3
@budji È una funzionalità integrata con emmet ... Quasi tutto ciò che potresti desiderare è anche un'estensione ora e se non lo è puoi sempre crearne uno tuo.
James Coyle,

Mi piace questa domanda e conosco ed estensione chiamata (Emmet Wrap with Abbrevation), ma chiunque saprebbe come fare le azioni inverse. Ad esempio: scrivi prima <p> ... </p> e includi <u> ** </u> con questo risultato <p> ... <u> ** </u> ... </ p>
Jmainol,

Risposte:


342

Emmet incorporato potrebbe fare il trucco:

  1. Seleziona testo (opzionale)
  2. Apri la tavolozza dei comandi (di solito Ctrl+ Shift+ P)
  3. Eseguire Emmet: Wrap with Abbreviation
  4. Inserisci un tag div(o un'abbreviazione .wrapper>p)
  5. Colpire Enter

Il comando può essere assegnato a un keybinding.

inserisci qui la descrizione dell'immagine


Questa cosa supporta anche passare argomenti:

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

Usalo in questo modo:

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


4
Questa dovrebbe essere la risposta, emmet è già installato in vscode
Nathan il

15
Ctrl+ pè goToFile. La tavolozza dei comandi è Ctrl+ Shift+ P.
Alex

1
Per JSX, ho dovuto aggiungere questo ulteriore passaggio: github.com/Microsoft/vscode/issues/4962#issuecomment-323880988
Gezim,

1
Con VSCode 1.35.0 (e possibilmente prima) questo funziona senza problemi con JSX - non c'è bisogno di alcuna configurazione aggiuntiva
davnicwil

98

Una rapida ricerca sul mercato VSCode: https://marketplace.visualstudio.com/items/bradgashler.htmltagwrap .

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

  2. incolla ext install htmltagwraped entra

  3. seleziona HTML

  4. premi Alt+ W( Option+ Wper Mac).


Probabilmente intendi selezionare Installa al passaggio 3.
Samir,

1
"Per usare, seleziona un pezzo di codice e premi" Alt + W "(" Opzione + W "per Mac)." Abbastanza semplice! Solo che non funziona. Ho provato la versione 0.0.3 con VS Code 1.16.1. Funziona quasi . Cerca di racchiudere la selezione in <p></p>tag, anziché in quella generica <div></div>che sembrerebbe una cosa più sana da fare. Quel che è peggio è che fallisce. Produce output come<p><p>My selected text.</p>
Samir,

1
Ho provato altre estensioni del genere. Ma finora non ho avuto fortuna a trovarne uno che funzioni. Questo era il più vicino a una soluzione funzionante. Ho provato a avvolgere 0.0.1 di David Taylor e il Ctrl + non ha funzionato affatto.
Samir,

1
AGGIORNAMENTO: l'estensione ora funziona correttamente e risolve i problemi di cui sopra. Niente più tag duplicati e ora puoi personalizzare il tag che desideri inserire tramite un'impostazione. Quindi, se si desidera che il tag sia un <div>si aggiunge la seguente impostazione, "htmltagwrap.tag": "div".
bgashler1,

questa è un'implementazione piuttosto scadente - funziona per un singolo tag, sarebbe bello avere qualcosa di simile al plug-in html notepad ++ dove puoi avvolgere la selezione per tag dalla selezione di tag configurabile
Sasha Bond

37

Dato che non posso commentare, espanderò la fantastica risposta di Alex.

Se desideri un'esperienza simile a quella sublime con il wrapping, apri le estensioni keymap (Preferenze> Estensioni keymap [ Cmd+ K Cmd+ M]) e aggiungi il seguente oggetto:

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

Il che vincolerà il comando A capo di Emmet a Alt+ Wquando viene selezionato il testo

(Mi dispiace solo per le istruzioni OSX)


7
Ecco come ho aggiunto la scorciatoia: Preferenze> Scorciatoie da tastiera; ... quindi cerca emmet wrap; ... fai clic su + per aggiungere la scorciatoia; ... :)
Luckylooke

1
Inoltre ho aggiunto && resourceLangId == 'html' per funzionare solo per pagine Web
surpavan

@surpavan, bello ma può anche essere utile avere in altri tipi di file, ad esempio file modello html
Andrew Lewis,

1
@AndrewLewis - sì, è per questo che l'ho tenuto sull'ID della lingua e non sull'estensione del file (files.associations).
Surpavan,

Maiusc + Alt + W è gratuito per Windows.
Timofeo

24
  1. Apri le scorciatoie da tastiera digitando ⌘ Command+ k ⌘ Command+ soCode > Preferences > Keyboard Shortcuts
  2. genere emmet wrap
  3. Fai clic sul segno più a sinistra di "Emmet: Wrap with Abbreviation"
  4. Digita ⌥ Option+w
  5. stampa Enter

3

imo c'è una risposta migliore per questo usando Snippet

Crea uno snippet con una definizione come questa:

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

Quindi associarlo a una chiave in keybindings.json Ad esempio in questo modo:

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

Penso che questo dovrebbe darti esattamente lo stesso risultato di htmltagwrap ma senza dover installare un'estensione.

Inserirà tag attorno al testo selezionato, per impostazione predefinita <b>tag e selezionerà il tag in modo che la digitazione ti permetta di cambiarlo.

Se desideri utilizzare un tag predefinito diverso, modifica semplicemente bla bodyproprietà dello snippet.


Questo va bene, ma Emmet può fare questo e molto altro, come generare HTML, attributi ed elenchi nidificati. Emmet esce dalla scatola con il codice VS.
Andrew Lewis,

Non capisco i voti negativi. Naturalmente, Emmet è più complesso e posso fare molte cose, ma per avvolgere una selezione di testo con un tag questa soluzione è fantastica! Quando ti avvolgi, non devi spostare gli occhi nella parte superiore dello schermo / finestra. Succede proprio lì, dove eri già perché hai selezionato il testo! È un caso d'uso piuttosto comune e una soluzione rapida con un tempo di esecuzione ridotto!
Andrei V

Ero molto eccitato per questo, ma non sono riuscito a farlo funzionare: /
Icaro
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.