¿Cómo hacer el ajuste de etiquetas en el código VS?

170

Me gustaría envolver mi html seleccionado dentro de una etiqueta en el código VS. ¿Cómo puedo hacer eso?

Hannes Neukermans
fuente
1
Una de las razones por las que no puedo moverme completamente a VSCode y deshacerme de Sublime.
budji
3
@budji Es una función incorporada con emmet ... Casi todo lo que pueda desear también es una extensión ahora y, si no lo es, siempre puede hacer la suya propia.
James Coyle
Me gusta esta pregunta y sé una llamada de extensión (Emmet Wrap with Abbrevation), pero cualquiera sabría cómo hacer las acciones inversas. Por ejemplo: escriba primero <p> ... </p> e inclúyalo dentro de <u> ** </u> con este resultado <p> ... <u> ** </u> ... </ p>
Jmainol

Respuestas:

341

Embedded Emmet podría hacer el truco:

  1. Seleccionar texto (opcional)
  2. Abrir la paleta de comandos (generalmente Ctrl+ Shift+ P)
  3. Ejecutar Emmet: Wrap with Abbreviation
  4. Ingrese una etiqueta div(o una abreviatura .wrapper>p)
  5. Golpear Enter

El comando se puede asignar a una combinación de teclas.

ingrese la descripción de la imagen aquí


Esto incluso admite argumentos de paso:

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

Úselo así:

  • span.myCssClass
  • span#myCssId
  • b
  • b.myCssClass
Alex
fuente
44
Esta debería ser la respuesta, emmet ya está instalado en vscode
Nathan
15
Ctrl+ pes goToFile. La paleta de comandos es Ctrl+ Shift+ P.
Alex
1
Para JSX, tuve que agregar este paso adicional: github.com/Microsoft/vscode/issues/4962#issuecomment-323880988
Gezim
1
Con VSCode 1.35.0 (y posiblemente antes) Esto se resuelve la caja con JSX - sin necesidad de ninguna configuración adicional
davnicwil
98

Una búsqueda rápida en el mercado VSCode: https://marketplace.visualstudio.com/items/bradgashler.htmltagwrap .

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

  2. pegar ext install htmltagwrape introduzca

  3. seleccione HTML

  4. presione Alt+ W( Option+ Wpara Mac).

Hannes Neukermans
fuente
Probablemente te refieres a seleccionar Instalar en el paso 3.
Samir
1
"Para usar, seleccione un fragmento de código y presione" Alt + W "(" Opción + W "para Mac)". ¡Suficientemente simple! Excepto que no está funcionando. Probé la versión 0.0.3 con VS Code 1.16.1. Es casi funciona. Intenta envolver la selección en <p></p>etiquetas, en lugar de la genérica, <div></div>lo que parecería más sensato. Lo peor es que falla. Produce resultados como<p><p>My selected text.</p>
Samir
1
Probé otras extensiones como esa. Pero hasta ahora no tengo suerte de encontrar uno que funcione. Este era el más cercano a una solución de trabajo. Intenté el wrap 0.0.1 de David Taylor, y Ctrl + i no funcionó en absoluto.
Samir
1
ACTUALIZACIÓN: la extensión ahora funciona correctamente y soluciona los problemas anteriores. No más etiquetas duplicadas, y ahora puede personalizar la etiqueta que desea insertar mediante una configuración. Así que si quieres que la etiqueta sea una <div>de agregar la siguiente configuración, "htmltagwrap.tag": "div".
bgashler1
esa es una implementación bastante pobre: ​​funciona para una sola etiqueta, sería bueno tener algo similar al complemento html notepad ++ donde puede ajustar la selección por etiqueta desde su selección de etiqueta configurable
Sasha Bond
37

Como no puedo comentar, ampliaré la fantástica respuesta de Alex.

Si desea una experiencia sublime con el ajuste, abra las Extensiones de mapa de teclas (Preferencias> Extensiones de mapa de teclas [ Cmd+ K Cmd+ M]) y agregue el siguiente objeto:

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

Lo que vinculará el comando de ajuste de Emmet a Alt+ Wcuando se seleccione texto

(Perdón por las instrucciones de OSX solamente)

Andrew Lewis
fuente
77
Así es como he agregado un acceso directo: Preferencias> Atajos de Keyamp; ... luego busque emmet wrap; ... haga clic en + para agregar su acceso directo; ... :)
Luckylooke
1
adicionalmente agregué && resourceLangId == 'html' para trabajar solo para páginas web
surpavan
@surpavan, agradable, pero también puede ser útil tener en otros tipos de archivos, por ejemplo, archivos de plantilla html
Andrew Lewis
1
@ AndrewLewis: sí, por eso lo mantuve en la identificación del idioma y no en la extensión del archivo (files.associations).
Surpavan
Shift + Alt + W es gratis para Windows.
Timofeus
24
  1. Abra los atajos de teclado escribiendo ⌘ Command+ k ⌘ Command+ soCode > Preferences > Keyboard Shortcuts
  2. Tipo emmet wrap
  3. Haga clic en el signo más a la izquierda de "Emmet: Ajustar con abreviatura"
  4. Escriba ⌥ Option+w
  5. prensa Enter
Adam Gonzales
fuente
3

OMI, hay una mejor respuesta para esto usando Snippets

Crea un fragmento con una definición como esta:

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

Luego, vincúlelo a una clave en keybindings.json Por ejemplo, así:

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

Creo que esto debería darte exactamente el mismo resultado que htmltagwrap pero sin tener que instalar una extensión.

Insertará etiquetas alrededor del texto seleccionado, por defecto <b>etiquetará y seleccionará la etiqueta, por lo que escribir le permite cambiarla.

Si desea utilizar una etiqueta predeterminada diferente, simplemente cambie bla bodypropiedad del fragmento.

Unifex
fuente
Esto está bien, pero Emmet puede hacer esto y mucho más, como generar HTML anidado, atributos y listas. Emmet sale de la caja con el código VS.
Andrew Lewis
No entiendo los votos negativos. Por supuesto, Emmet es más complejo y puedo hacer muchas cosas, pero para envolver una selección de texto con una etiqueta, ¡esta solución es excelente! Cuando termina, no tiene que mover los ojos a la parte superior de la pantalla / ventana. ¡Sucede allí, donde ya estabas porque seleccionaste el texto! ¡Es un caso de uso bastante común y una solución rápida con un tiempo de ejecución bajo!
Andrei V
Estaba muy emocionado con esto, sin embargo, no pude hacerlo funcionar: /
Icaro