【问题标题】:Select matching element/rename HTML tag in Visual Studio Code在 Visual Studio Code 中选择匹配元素/重命名 HTML 标记
【发布时间】:2020-05-15 14:47:19
【问题描述】:

假设我有以下代码

    <div class="footer">
      <div>Foo</div>
    </div>

如何将 .footerdiv 元素更改为 footer 元素?

也就是说,如果我将光标放在div 中,我正在寻找用于选择元素的开始和结束标签的键盘快捷键。我相信我之前在 Sublime 中使用过 emmet 来执行此操作,但我似乎无法在 Code 中找到类似的功能。 (理想情况下,这也适用于 JSX 文件......)

【问题讨论】:

  • 这还不是我能找到的功能,而且我还没有找到一个扩展或编辑器功能来始终如一地模拟它(如果你找到了,有人发布)。但是有一个用户语音request 我们可以投票。
  • 可以使用Http snipet扩展,安装和设置:stackoverflow.com/a/45279141/8187926

标签: visual-studio-code


【解决方案1】:

无需编写配置代码,只需在设置页面启用即可。

【讨论】:

    【解决方案2】:

    2021 年 3 月更新:

    不需要扩展,现在已经在 VSCode 中编写了。

    "editor.linkedEditing": true
    

    在此处阅读更多信息:https://code.visualstudio.com/Docs/languages/html#_auto-update-tags

    【讨论】:

    • 它已被弃用,现在称为Linked Editing -> "editor.linkedEditing": true
    • 对于jsx、tsx文件需要使用Auto Rename Tag分机
    【解决方案3】:

    V1.41 正在添加此功能,请参阅https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_41.md#html-rename-tags

    HTML 重命名标签

    您现在可以使用 F2 重命名 HTML 中的开始/结束标记对。

    F2 当光标在其中一个标签上时,您将获得一个带有光标的小输入框以输入新标签名称,并且开始/结束标签将替换为您键入的任何内容上。

    https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_42.md#html-mirror-cursor-off-by-default

    同样令人感兴趣的可能是刚刚在 v1.41 中添加的“镜像标签”功能 (https://github.com/microsoft/vscode-docs/blob/vnext/release-notes/v1_41.md#html-mirror-cursor):

    在标签内单击将在匹配的开始或结束标签中创建另一个光标。

    现在,当您编辑 HTML 标签时,VS Code 会添加一个“镜像光标”。 此行为由设置控制 html.mirrorCursorOnMatchingTag,默认开启。

    --------- v1.42正在改变镜像光标的默认状态:

    HTML 镜像光标默认关闭

    我们已将镜像光标设为可选功能。在即将到来的 迭代,我们将继续改进其实现以使 功能更易于理解并适用于更多语言。 您仍然可以通过打开来使用此功能 html.mirrorCursorOnMatchingTag.


    感谢 JerryGoyal 在下面的回答(我已投赞成票) - 我继续这个持续的回答。

    因为我已经跟踪了半年多了,v1.44再次重命名了它。来自Synced Regions

    同步区域

    我们改进了去年 11 月推出的镜像光标功能 使用名为 Synced Regions 的新实现。目前这 功能可用于 HTML,您可以通过以下方式之一试用 以下方式:

    在 HTML 标签上运行命令On Type Rename Symbol(绑定到 Ctrl+Shift+F2 默认)。

    打开editor.renameOnType 设置并将光标移动到 HTML 标记。

    红色区域是同步区域。正如他们的名字所暗示的,任何改变 在一个区域将同步到其他区域。您可以退出此模式 通过将光标移出区域或按ESC。 此外,键入或粘贴任何以空格开头的内容 在任何地区退出此模式。

    我们期待提供一个 API 来实现这一点 可用于其他语言(例如 JSX)的 rename-on-type 体验, XML,甚至 TypeScript 中的局部变量。

    正如最后一部分所述,它可以在 html 中开箱即用,但其他语言需要自己实现。截至 2020 年 6 月,通过我的测试,它仍然无法在嵌入的 html 标签上的 jsx 文件中工作。

    您必须在设置中启用此功能,它默认关闭

    【讨论】:

    • 看起来是这样 - 它不适用于嵌入了 html 标签的 .jsx 文件。
    • @Luis 当前修改此功能的工作包括其他 lsp 的 api 链接以实现同步区域/镜像游标。 github.com/microsoft/vscode/issues/88424#issuecomment-600840619
    • 你也可以从命令面板访问vscode的“重命名符号”(当然,“重命名符号”可以映射到任何你想要的键盘快捷键)
    • 不幸的是,这似乎不适用于我在 Mac 上的 .vue 文件。
    • F2 工作正常,vscode 1.59.1,操作系统:kubuntu 21.04,Linux
    【解决方案4】:

    快速简单的选择工具也可以正常工作,但并不完美。 它有超过 40k 的下载量 https://marketplace.visualstudio.com/items?itemName=dbankier.vscode-quick-select

    它允许您选择工具

    • Ctrl + K ' 选择单引号之间的所有内容
    • Ctrl + K " 选择双引号之间的所有内容
    • Ctrl + K ` 选择反引号之间的所有内容
    • Ctrl + K (选择括号内的所有内容
    • Ctrl + K ) 选择括号内的所有内容并包含它们
    • Ctrl + K [ 或 ] 选择方括号之间的所有内容并包含它们
    • Ctrl + K { 或 } 选择大括号之间的所有内容并包含它们
    • Ctrl + K 选择尖括号之间的所有内容并包含

    【讨论】:

      【解决方案5】:

      你可以使用 Emmet 更新标签在没有扩展的情况下做到这一点

      1. 将光标放在开始标签上
      2. 按 CTRL+SHIFT+P 打开命令面板
      3. 通过键入诸如“em up t”之类的内容来搜索“Emmet:更新标签”,和/或在列表中找到它
      4. 按回车键选择“Emmet:更新标签”
      5. 输入新标签
      6. 按回车

      开始和结束标记更新为新的。

      【讨论】:

      • @DrazenBjelovuk 我已经在 razor/cshtml 中给它发了短信,如果为该类型启用了 emmet,它可能适用于其他文件类型。见this answer
      • 即使启用,似乎也不适用于所有类型:github.com/Microsoft/vscode/issues/41618
      • 即使这样可行,这也很繁琐……应该更简单。
      【解决方案6】:

      在 Windows 上按 CTRL + D。正如@tataata 所说,Mac OS 上的 CMD + D 。不限于标签重命名。很有用。

      【讨论】:

      • 这绝对不是重命名。那只是多选。这意味着如果你有一个div 并且在其中你有一个句子,例如“有些人很了不起”,那么你不会重命名结束的 div,而是从“个人”重命名“div”......还有,如果您有多个/嵌套相同的元素,比如说 3 个嵌套 div。您尝试重命名第一个或第二个,它不起作用。
      • @maxime1992 实际上,您可以将其设置为匹配大写和/或整个单词。只要句子中没有“div”词(即“He used a div”),整个词设置更有可能找到结尾div。
      • 这应该是答案。
      • CTRL-D 适合基本使用:)!非常感谢。
      【解决方案7】:

      您可以使用快捷键cmd + D (Mac OS) 将下一个匹配元素添加到选择中,然后可以同时编辑打开和关闭标签。

      【讨论】:

      • 如上所述,这篇文章没有回答这个问题。结果将是&lt;footer class="footer"&gt;&lt;footer&gt;Foo&lt;/footer&gt;&lt;/footer&gt;&lt;footer class="footer"&gt;&lt;footer&gt;Foo&lt;/div&gt;&lt;/div&gt;
      • 那不回答问题
      【解决方案8】:

      您要重命名成对的标签吗?如果是,有一个更简单的方法:您只需要安装Auto Rename Tag 扩展。当您重命名一个 HTML 标签时,它会自动重命名配对的 HTML 标签。

      【讨论】:

      • 在此和最近的更新之间添加了更多 emmet 功能,这是可行的。它并不完美(在某些 JSX 上被绊倒了),但我可以使用它来重命名和 emmet 以删除标签。
      • 这应该是标准行为。
      • 如何使它适用于车把 (.hbs) 文件?将"auto-rename-tag.activationOnLanguage": ["html", "handlebars"] 添加到settings.json 文件没有帮助。
      • 注意:这个扩展不能很好地工作并且经常会杀死 CPU。这应该内置到 vscode 中。
      • 不再需要自动删除标签。这现在是 VS Code 中内置的一个功能code.visualstudio.com/updates/v1_41#_html-rename-tags
      【解决方案9】:

      我正在使用标签重命名。在标签上按 F2,它会重命名开始和结束标签。

      https://marketplace.visualstudio.com/items?itemName=krizzdewizz.tag-rename

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-01-09
        • 2017-11-12
        • 1970-01-01
        • 1970-01-01
        • 2010-09-16
        • 2019-10-03
        • 2017-01-02
        相关资源
        最近更新 更多