如何在 Sublime Text 3 中切换 XML 行注释

2024-02-04

我正在使用 Sublime Text 3。我遇到了问题。我不知道如何切换 XML 行注释。

我知道有一个Toggle CommentSublime Text 3 中的函数,我尝试过。然而,结果却和我想象的不一样。

例如,我想切换注释以下 XML 代码:

<profile>
    <id>jdk-1.8</id>
    <activation>
        <activeByDefault>true</activeByDefault>
        <jdk>1.8</jdk>
    </activation>
    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
    </properties>
</profile>

我想让它像这样(就像Eclipse的行注释一样):

<!-- <profile> -->
<!--    <id>jdk-1.8</id> -->
<!--    <activation> -->
<!--        <activeByDefault>true</activeByDefault> -->
<!--        <jdk>1.8</jdk> -->
<!--    </activation> -->
<!--    <properties> -->
<!--        <maven.compiler.source>1.8</maven.compiler.source> -->
<!--        <maven.compiler.target>1.8</maven.compiler.target> -->
<!--        <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion> -->
<!--    </properties> -->
<!-- </profile> -->

但是通过使用Toggle Comment在Sublime中,我只能得到以下代码:

<!-- <profile>
    <id>jdk-1.8</id>
    <activation>
        <activeByDefault>true</activeByDefault>
        <jdk>1.8</jdk>
    </activation>
    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
    </properties>
</profile> -->

我不知道如何实现这个目标。我在谷歌上搜索这个问题,但找不到任何有用的信息。你能给我一些建议吗?


一般来说,Sublime 可以配置为了解行注释和块注释之间的区别并采取相应的操作。但据我所知,这对于 XML 来说是无法完成的,因为它需要用注释字符来包装内容。

更具体地说,注释的配置选项指定 TM_COMMENT_START(用于纯行注释)或 TM_COMMENT_START 和 TM_COMMENT_END(用于块注释)。如果两者都存在,则切换命令会根据内容和上下文选择正确的一项。

对于 XML,由于 XML 中注释的工作方式,它使用一对,这意味着只能使用块注释。但是,当您在不进行任何选择的情况下调用该命令时,它会假定选择内容环绕整行。如果您有选择,那就是被包装的内容。

解决此问题的一种方法是在切换注释之前将您的选择分成几行。你可以通过以下方式做到这一点Selection > Split into Lines从菜单(这还将显示该命令的键绑定)。

可以将这些命令分组到一个宏中,这样您就不必自己执行多个步骤。

这样的宏可能如下所示(保存在您的User封装为XML_Line_Comment.sublime-macro):

[
    {
        "command": "split_selection_into_lines"
    },
    {
        "command": "toggle_comment",
        "args": {"block": false}
    },
    {
        "command": "single_selection"
    },
    {
        "command": "move_to",
        "args": {"extend": false, "to": "bol" }
    }
]

这将分割选择,切换注释,然后返回到单个选择(并跳转到行的开头)。您可以根据需要进行修改(例如,如果您不想随后恢复为单一选择)。

您可以从菜单栏(Tools > Macros > User > XML_Line_Comment),但更好的方法可能是设置键绑定。一个例子是:

{
    "keys": ["ctrl+/"],
    "command": "run_macro_file",
    "args": { "file": "res://Packages/User/XML_Line_Comment.sublime-macro" },
    "context": [
        { "key": "selection_empty", "operator": "equal", "operand": false},
        { "key": "selector", "operator": "equal", "operand": "text.xml"},
    ]
},

这将导致通常切换注释的键在 XML 文件中存在选择的特定情况下运行宏。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Sublime Text 3 中切换 XML 行注释 的相关文章

随机推荐

  • 片段错误:类型不兼容,需要 android.app.fragment 但找到了 Activity.messagefragment

    Override public void onDrawerItemSelected View view int position displayView position private void displayView int posit
  • 如何在 Java 中将 ASCII 字符串转换为 UTF-8 字符串?

    如标题所示 如何在 Java 中将 ASCII 字符串转换为 UTF 8 字符串 Thanks 编辑 我的情况确实是我读取了一个中文字符串 当我输出它时 它都是乱码 我认为问题可能出在编码上 那么 如何正确地将字符串从乱码转换为正确的语言集
  • 存储或反映变量的“参考水平”

    C 中有没有一种方法可以反映变量的 指针级别数 例如 int a为1级 int b是 2 个级别 并且int c是 0 级 除了使用typeid并解析从中产生的字符串 我问的原因是我正在使用指向成员函数的指针 http www goingw
  • 如何在 SQL Server 中声明数组变量?

    我想在存储过程中执行一个查询 该查询应该循环所有数组值 例如 declare arrayStoreID 1001 2400 2001 5000 for int i 0 i
  • TreeMap中出现这个空指针异常是由于并发访问造成的吗?

    我知道TreeMap https docs oracle com javase 7 docs api java util TreeMap html不是线程安全的 我正在尝试将 TreeMap 与并发跳表映射 https docs oracl
  • 在折叠的 Bootstrap 手风琴中启动时,所选下拉菜单的宽度接近于零

    当选择的下拉菜单位于 Bootstrap 3 手风琴内部时最初隐藏 那么下拉菜单的宽度接近于零 展开后如下所示 而我希望它看起来像这样 当panel collapse collapse div没有in类 有效地表明它最初已经崩溃 这是重现此
  • UITableView 动态单元格高度仅在滚动后才正确

    我有一个UITableView与定制UITableViewCell使用自动布局在故事板中定义 该单元格有多个多行UILabels The UITableView似乎可以正确计算单元格高度 但对于前几个单元格 该高度未在标签之间正确划分 滚动
  • Rails:为模型创建脚手架以从超类继承?

    我是 Rails 的新手 仍然处于起步阶段 所以如果这是微不足道的或 错误的方式 做事 请原谅我 我想为一些脚手架模型创建一个超类 例如 我想创建一个脚手架Men并为Women 但我希望他们都继承自People超类 Men and Wome
  • 使用 Scrapy 和 selenium 抓取网站

    我要抓取 html 内容http ntry com scores named ladder main php http ntry com scores named ladder main php with Scrapy 但是 由于该网站的J
  • 如何使用单个查询从两个表中选择数据

    我一直在尝试了解如何使用单个查询从两个表中选择数据 如果有人能提出比单一查询更好的方法 我洗耳恭听 以前 我会使用两个查询来完成此操作 尽管我相信单个查询会更好 但我可以轻松地进行工作 因此尝试学习 我的一张桌子与此类似 但经过了简化 将此
  • 在R中安装依赖包时“无法移动临时安装”

    当我安装软件包时 先安装必备软件包 然后再安装实际软件包 我得到了 unable to move temporary installation 对所有必备包发出警告 但对实际包没有此类警告 但是当我加载该包时会出现错误 例如 当我insta
  • 从基类方法返回对派生类的引用

    我的任务是实现一个简单的 SVG 生成器 我需要支持圆 折线和文本 这三者至少有 4 个常用方法 设置描边颜色 设置填充颜色 设置描边宽度 字符串 主要要求之一是支持链接 例如 折线 SetStrokeColor 白色 SetFillCol
  • 按相同键对 JavaScript 数组对象进行分组

    我有一个对象数组 其中一些具有相同的月份名称 但基于日期的值不同 我们如何根据相同的属性值对数组对象进行分组 例如 month Jan value 3 month Jan value 3 5 month Feb value 2 1 mont
  • 什么任务最适合以函数式编程风格完成?

    我最近刚刚发现了函数式编程风格 我相信它将减少开发工作 使代码更易于阅读 使软件更易于维护 然而 问题是我很难说服任何人 嗯 最近我有机会就如何减少软件开发和维护工作进行演讲 我想向他们介绍函数式编程的概念以及它如何使团队受益 我的想法是向
  • 在项目的浏览器列表中配置的一个或多个浏览器

    我是离子框架的新手 启动离子应用程序时收到以下警告 请提出修复建议 ng One or more browsers which are configured in the project s Browserslist configurati
  • 鼠标移动/滚动到下一个哈希

    我添加了以下代码以便用鼠标滚动 通过单击 拖动滚动 而不是通过鼠标滚轮滚动 到目前为止 一切都很好 就像魅力一样 var clicked false clickY document on mousemove function e click
  • 枚举两个大数组的快速方法?

    我有两个大数组要处理 但让我们看一下下面的简化示例来了解一下这个想法 我想查找是否有一个元素data1与中的元素匹配data2并返回两者的数组索引data1 and data2如果以新数组的形式找到匹配项 index of data1 in
  • Aurelia 中 fetch() 的错误处理

    我有一个 API 其中包含服务器引发错误 状态 500 时出现的问题的有用描述 该描述作为响应文本的一部分 我的客户端代码使用 Aurelia 通过以下方式调用 apiaurelia fetch client使用通用方法进行调用 funct
  • AADB2C90077:用户没有现有会话,请求提示参数的值为“无”

    我有一个 Angular 应用程序 它使用MSAL js https github com AzureAD microsoft authentication library for js当我尝试获取访问令牌时 我收到以下错误 AADB2C9
  • 如何在 Sublime Text 3 中切换 XML 行注释

    我正在使用 Sublime Text 3 我遇到了问题 我不知道如何切换 XML 行注释 我知道有一个Toggle CommentSublime Text 3 中的函数 我尝试过 然而 结果却和我想象的不一样 例如 我想切换注释以下 XML