如何在VS代码中包装标签?


169

我想将我选择的html包装在VS代码中的标记内。我怎么做?


1
我无法完全转向VSCode并放弃Sublime的原因之一。
budji

3
@budji这是emmet的内置功能...您几乎想要的任何东西现在也都是扩展名,如果不是,那么您可以随时创建自己的扩展名。
詹姆斯·科伊尔

我喜欢这个问题,并且知道和扩展呼叫(带有缩写的Emmet Wrap),但是任何人都知道如何进行逆向操作。例如:首先写<p> ... </ p>并在<u> ** </ u>中包含此结果<p> ... <u> ** </ u> ... </ p>
Jmainol '19

Answers:


341

嵌入式Emmet可以达到目的:

  1. 选择文字(可选)
  2. 打开命令面板(通常是Ctrl+ Shift+ P
  3. 执行 Emmet: Wrap with Abbreviation
  4. 输入标签div(或缩写.wrapper>p
  5. 击中 Enter

可以将命令分配给按键绑定。

在此处输入图片说明


这个东西甚至支持传递参数:

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

像这样使用它:

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


4
这应该是答案,emmet已安装在vscode中
Nathan

15
Ctrl+ p是goToFile。命令面板为Ctrl+ Shift+ P
亚历克斯

1
对于JSX,必须添加此额外步骤:github.com/Microsoft/vscode/issues/4962#issuecomment-323880988
Gezim

1
使用VSCode 1.35.0(可能更早),可以解决JSX的问题-不需要任何额外的配置
davnicwil

98

在VSCode市场上进行快速搜索:https ://marketplace.visualstudio.com/items/bradgashler.htmltagwrap 。

  1. 启动VS Code快速打开(Ctrl+ P

  2. 粘贴ext install htmltagwrap并输入

  3. 选择HTML

  4. Alt+ W(对于Mac,则为Option+ W)。


您可能的意思是在步骤3中选择“安装”
。– Samir

1
“要使用,请选择一大段代码,然后按“ Alt + W”(对于Mac,为“ Option + W”)。” 很简单!除非它不起作用。我尝试使用VS Code 1.16.1版本0.0.3。它几乎可以工作。它尝试将选择内容包装在<p></p>标签中,而不是在通用标签中包装,<div></div>这似乎更明智。更糟糕的是它失败了。它产生的输出为<p><p>My selected text.</p>
Samir

1
我尝试了其他扩展。但是到目前为止,我还没有运气找到一个可行的方法。这是最接近可行的解决方案。我尝试使用David Taylor换行0.0.1,而Ctrl + i根本不起作用。
萨米尔

1
更新:该扩展名现在可以正常工作并解决了上述问题。不再有重复的标签,您现在可以通过设置自定义要插入的标签。因此,如果您希望标签为a,<div>请添加以下设置"htmltagwrap.tag": "div"
bgashler1

那是非常差的实现-适用于单个标签,最好有一个类似于notepad ++ html插件的东西,在这里您可以从可配置标签选择中按标签包装选择
Sasha Bond

37

我无法发表评论,我将详细介绍Alex的出色答案。

如果您希望获得类似Sublime的包装体验,请打开Keymap Extensions(首选项> Keymap Extensions [ Cmd+ K Cmd+ M])并添加以下对象:

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

当选择文本时,它将Emmet wrap命令绑定到Alt+W

(对不起,仅适用于OSX的说明)


7
这是我添加快捷方式的方式:首选项> Keyamp快捷方式; ...然后搜索emmet包装; ...单击+添加快捷方式; ... :)
Luckylooke

1
另外,我添加了&& resourceLangId =='html'仅适用于网页
surpavan

@surpavan,很好,但是也可以使用其他文件类型,例如html模板文件
Andrew Lewis

1
@AndrewLewis-是的,这就是为什么我将其保留为语言ID而不是文件扩展名(files.associations)的原因。
surpavan

Shift + Alt + W对于Windows是免费的。
Timofeus

23
  1. 通过输入⌘ Command+ k ⌘ Command+ s或打开键盘快捷键Code > Preferences > Keyboard Shortcuts
  2. 类型 emmet wrap
  3. 单击“ Emmet:缩写包装”左侧的加号。
  4. 类型⌥ Option+w
  5. Enter

3

imo使用代码片段对此有更好的答案

创建一个具有如下定义的代码段:

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

然后将其绑定到keybindings.json中的键,例如:

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

我认为这应该为您提供与htmltagwrap完全相同的结果,而不必安装扩展名。

它将在选定的文本周围插入标签,默认为<b>标签并选择标签,以便您键入进行更改。

如果要使用其他默认标签,只需更改代码段bbody属性。


很好,但是Emmet可以做到这一点,甚至更多,例如生成嵌套的HTML,属性和列表。Emmet开箱即用VS代码。
安德鲁·刘易斯

我不了解反对票。当然,Emmet更复杂,我可以做很多事情,但是对于用标签包装文本选择,此解决方案很棒!包裹时,您不必将眼睛移到屏幕/窗口的上部。它就在那儿发生,因为您已经选择了文本,所以您已经在这里!这是一个非常常见的用例,并且运行时间短,解决方案快!
Andrei V

我对此感到非常兴奋,但是我无法使其工作:/
伊卡洛
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.