Comment faire un wrapping de balises dans du code VS?

170

Je voudrais envelopper mon html sélectionné dans une balise en code VS. Comment je fais ça?

hannes neukermans
la source
1
L'une des raisons pour lesquelles je ne peux pas passer complètement à VSCode et abandonner Sublime.
budji
3
@budji C'est une fonctionnalité intégrée à emmet ... Presque tout ce que vous pourriez souhaiter est aussi une extension maintenant et si ce n'est pas le cas, vous pouvez toujours créer la vôtre.
James Coyle
J'aime cette question et je connais un appel d'extension (Emmet Wrap avec abréviation), mais n'importe qui saurait comment faire les actions inverses. Par exemple: écrivez d'abord <p> ... </p> et incluez à l'intérieur <u> ** </u> avec ce résultat <p> ... <u> ** </u> ... </ p>
Jmainol

Réponses:

342

Emmet intégré pourrait faire l'affaire:

  1. Sélectionnez du texte (facultatif)
  2. Ouvrir la palette de commandes (généralement Ctrl+ Shift+ P)
  3. Exécuter Emmet: Wrap with Abbreviation
  4. Entrez une balise div(ou une abréviation .wrapper>p)
  5. Frappé Enter

La commande peut être affectée à une combinaison de touches.

entrez la description de l'image ici


Cette chose prend même en charge les arguments de passage:

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

Utilisez-le comme ceci:

  • span.myCssClass
  • span#myCssId
  • b
  • b.myCssClass
Alex
la source
4
Cela devrait être la réponse, emmet est déjà installé dans vscode
Nathan
15
Ctrl+ pest goToFile. La palette de commandes est Ctrl+ Shift+ P.
Alex
1
Pour JSX, a dû ajouter cette étape supplémentaire: github.com/Microsoft/vscode/issues/4962#issuecomment-323880988
Gezim
1
Avec VSCode 1.35.0 (et peut-être plus tôt), cela fonctionne avec JSX - pas besoin de configuration supplémentaire
davnicwil
98

Une recherche rapide sur le marché VSCode: https://marketplace.visualstudio.com/items/bradgashler.htmltagwrap .

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

  2. coller ext install htmltagwrapet entrer

  3. sélectionnez HTML

  4. appuyez sur Alt+ W( Option+ Wpour Mac).

hannes neukermans
la source
Vous voulez probablement dire sélectionnez Installer à l'étape 3.
Samir
1
"Pour l'utiliser, sélectionnez un morceau de code et appuyez sur" Alt + W "(" Option + W "pour Mac)." Assez simple! Sauf que ça ne marche pas. J'ai essayé la version 0.0.3 avec VS Code 1.16.1. Cela fonctionne presque . Il essaie d'envelopper la sélection dans des <p></p>balises, au lieu du générique, <div></div>ce qui semblerait plus sain à faire. Le pire, c'est que cela échoue. Il produit une sortie comme<p><p>My selected text.</p>
Samir
1
J'ai essayé d'autres extensions comme ça. Mais jusqu'à présent, je n'ai pas de chance d'en trouver un qui fonctionne. Celui-ci était le plus proche d'une solution de travail. J'ai essayé wrap 0.0.1 de David Taylor, et le Ctrl + i ne fonctionnait pas du tout.
Samir
1
MISE À JOUR: l'extension fonctionne désormais correctement et résout les problèmes ci-dessus. Plus de balise en double, et vous pouvez désormais personnaliser la balise que vous souhaitez insérer via un paramètre. Donc , si vous voulez que l'étiquette soit un <div>vous ajoutez le paramètre suivant, "htmltagwrap.tag": "div".
bgashler1
c'est une mise en œuvre assez médiocre - fonctionne pour une seule balise, ce serait bien d'avoir quelque chose de similaire au plugin html notepad ++ où vous pouvez envelopper la sélection par tag à partir de votre sélection de balises configurables
Sasha Bond
37

Comme je ne peux pas faire de commentaire, je vais développer la réponse fantastique d'Alex.

Si vous voulez une expérience de type Sublime avec le wrapping, ouvrez les extensions Keymap (Préférences> Extensions Keymap [ Cmd+ K Cmd+ M]) et ajoutez l'objet suivant:

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

Ce qui liera la commande Emmet wrap à Alt+ Wlorsque le texte est sélectionné

(Désolé pour les instructions OSX uniquement)

Andrew Lewis
la source
7
Voici comment j'ai ajouté un raccourci: Préférences> Raccourcis Keyamp; ... puis recherchez emmet wrap; ... cliquez sur + pour ajouter votre raccourci; ... :)
Luckylooke
1
de plus, j'ai ajouté && resourceLangId == 'html' pour ne fonctionner que pour les pages Web
surpavan
@surpavan, bien mais il peut également être pratique d'avoir dans d'autres types de fichiers, par exemple des fichiers de modèle html
Andrew Lewis
1
@AndrewLewis - oui, c'est pourquoi je l'ai gardé à l'identifiant de la langue et non à l'extension de fichier (files.associations).
surpavan
Shift + Alt + W est gratuit pour Windows.
Timofeus
24
  1. Ouvrez les raccourcis clavier en tapant ⌘ Command+ k ⌘ Command+ souCode > Preferences > Keyboard Shortcuts
  2. Type emmet wrap
  3. Cliquez sur le signe plus à gauche de "Emmet: Wrap with Abbreviation"
  4. Tapez ⌥ Option+w
  5. presse Enter
Adam Gonzales
la source
3

imo il y a une meilleure réponse pour cela en utilisant des extraits

Créez un extrait avec une définition comme celle-ci:

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

Ensuite, liez-le à une clé dans keybindings.json Par exemple, comme ceci:

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

Je pense que cela devrait vous donner exactement le même résultat que htmltagwrap mais sans avoir à installer une extension.

Il insérera des balises autour du texte sélectionné, par défaut <b>balise et sélectionne la balise afin que la saisie vous permette de la modifier.

Si vous souhaitez utiliser une autre balise par défaut, modifiez simplement bla bodypropriété de l'extrait de code.

Unifex
la source
C'est bien, mais Emmet peut faire cela et bien plus encore, comme générer du HTML imbriqué, des attributs et des listes. Emmet sort de la boîte avec le code VS.
Andrew Lewis
Je ne comprends pas les votes négatifs. Bien sûr, Emmet est plus complexe et je peux faire beaucoup de choses mais pour envelopper une sélection de texte avec une balise, cette solution est excellente! Lorsque vous enveloppez, vous n'avez pas à déplacer vos yeux vers la partie supérieure de votre écran / fenêtre. Cela se passe juste là, là où vous étiez déjà car vous avez sélectionné le texte! C'est un cas d'utilisation assez courant et une solution rapide avec un temps d'exécution réduit!
Andrei V
J'étais très excité avec cela mais je ne pouvais pas le faire fonctionner: /
Icaro