Como fazer a quebra de tags no código VS?

170

Gostaria de envolver meu html selecionado em uma tag no código VS. Como faço isso?

hannes neukermans
fonte
1
Uma das razões pelas quais não consigo mudar completamente para o VSCode e abandonar o Sublime.
Budji # 5/18
3
@budji É um recurso embutido com o Emmet ... Praticamente tudo o que você poderia querer também é uma extensão agora e, se não for, você sempre pode fazer o seu próprio.
James Coyle
Eu gosto dessa pergunta e conheço uma chamada de extensão (Emmet Wrap with Abrevation), mas qualquer um saberia como fazer as ações inversas. Por exemplo: escreva primeiro <p> ... </p> e inclua dentro de <u> ** </u> com este resultado <p> ... <u> ** </u> ... </ p>
Jmainol

Respostas:

341

O Emmet incorporado pode fazer o truque:

  1. Selecionar texto (opcional)
  2. Paleta de comandos abertos (geralmente Ctrl+ Shift+ P)
  3. Executar Emmet: Wrap with Abbreviation
  4. Digite uma tag div(ou uma abreviação .wrapper>p)
  5. Acertar Enter

O comando pode ser atribuído a uma combinação de teclas.

insira a descrição da imagem aqui


Essa coisa ainda suporta argumentos de passagem:

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

Use-o assim:

  • span.myCssClass
  • span#myCssId
  • b
  • b.myCssClass
Alex
fonte
4
Esta deve ser a resposta, o emmet já está instalado no vscode #
Nathan #
15
Ctrl+ pé goToFile. A paleta de comandos é Ctrl+ Shift+ P.
1174 Alex
1
Para o JSX, foi necessário adicionar esta etapa extra: github.com/Microsoft/vscode/issues/4962#issuecomment-323880988
Gezim
1
Com VSCode 1.35.0 (e, possivelmente, mais cedo) Isso funciona a caixa com JSX - sem necessidade de qualquer configuração adicional
davnicwil
98

Uma pesquisa rápida no mercado VSCode: https://marketplace.visualstudio.com/items/bradgashler.htmltagwrap .

  1. Iniciar o VS Code Quick Open ( Ctrl+ P)

  2. cole ext install htmltagwrape insira

  3. selecione HTML

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

hannes neukermans
fonte
Você provavelmente quer dizer selecione Instalar no passo 3.
Samir
1
"Para usar, selecione um pedaço de código e pressione" Alt + W "(" Option + W "para Mac)." Simples o suficiente! Exceto que não está funcionando. Eu tentei a versão 0.0.3 com o código VS 1.16.1. Isso quase funciona. Ele tenta agrupar a seleção em <p></p>tags, em vez do genérico, o <div></div>que pareceria mais sensato. O pior é que falha. Produz saída como<p><p>My selected text.</p>
Samir
1
Eu tentei outras extensões como essa. Mas até agora não estou tendo sorte em encontrar um que funcione. Este foi o mais próximo de uma solução de trabalho. Tentei embrulhar 0.0.1 por David Taylor, e o Ctrl + não funcionou.
Samir
1
ATUALIZAÇÃO: a extensão agora funciona corretamente e soluciona os problemas acima. Chega de tag duplicada e agora você pode personalizar a tag que deseja inserir por meio de uma configuração. Portanto, se você deseja que a tag seja a, <div>adicione a seguinte configuração "htmltagwrap.tag": "div",.
bgashler1
que é a implementação muito pobre - obras para única tag, seria bom ter algo semelhante ao bloco de notas ++ html plug-in onde você pode envolver a seleção de tag de sua seleção tag configurável
Sasha de Bond
37

Como não posso comentar, vou expandir a fantástica resposta de Alex.

Se você deseja uma experiência do tipo sublime com quebra automática, abra as extensões de mapa de teclas (Preferências> extensões de mapa de teclas [ Cmd+ K Cmd+ M]) e adicione o seguinte objeto:

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

O que vinculará o comando de quebra automática do Emmet a Alt+ Wquando o texto for selecionado

(Desculpe apenas pelas instruções do OSX)

Andrew Lewis
fonte
7
Isto é como eu adicionei atalho: Preferências> Keyamp Shortcuts; ... então procurar envoltório Emmet; ... clique em + para adicionar o atalho; ... :)
Luckylooke
1
adicionalmente eu adicionei && resourceLangId == 'html' para funcionar apenas em páginas da Web
surpavan
@surpavan, bom, mas ele também pode ser útil para ter em outros tipos de arquivo por exemplo html Arquivos de Gabarito
Andrew Lewis
1
@ AndrewLewis - sim, é por isso que eu o mantive no idioma id e não na extensão do arquivo (files.associations).
surpavan
Shift + Alt + W é gratuito para Windows.
Timofeus 27/02
24
  1. Abra Atalhos de teclado digitando ⌘ Command+ k ⌘ Command+ souCode > Preferences > Keyboard Shortcuts
  2. Tipo emmet wrap
  3. Clique no sinal de adição à esquerda de "Emmet: quebrar com abreviação"
  4. Digite ⌥ Option+w
  5. pressione Enter
Adam Gonzales
fonte
3

imo há uma resposta melhor para isso usando Snippets

Crie um snippet com uma definição como esta:

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

Em seguida, vincule-o a uma chave em keybindings.json Por exemplo:

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

Eu acho que isso deve fornecer exatamente o mesmo resultado que o htmltagwrap, mas sem a necessidade de instalar uma extensão.

Ele inserirá tags em torno do texto selecionado, o padrão é <b>tag e seleciona a tag para que a digitação permita que você a altere.

Se você deseja usar uma tag padrão diferente, basta alterar ba bodypropriedade in do snippet.

Unifex
fonte
Isso é bom, mas o Emmet pode fazer isso e muito mais, como gerar HTML, atributos e listas aninhados. Emmet sai da caixa com o código VS.
Andrew Lewis
Eu não entendo os votos negativos. Claro, Emmet é mais complexo e eu posso fazer muitas coisas, mas para agrupar uma seleção de texto com uma tag, essa solução é ótima! Quando você quebra, você não precisa mover os olhos para a parte superior da tela / janela. Acontece logo ali, onde você já estava porque selecionou o texto! É um caso de uso bastante comum e uma solução rápida com um tempo de execução baixo!
Andrei V
Fiquei muito animado com isso, mas não consegui fazê-lo funcionar: /
Icaro