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

时间:2016-12-06 01:22:47

标签: xml toggle sublimetext3

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

我知道Sublime Text 3中有一个Toggle Comment函数,我试过了。但是,结果与我设想的结果不一样。

例如,我想切换注释以下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> -->

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

<!-- <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> -->

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

1 个答案:

答案 0 :(得分:2)

通常,Sublime可以配置为知道行和块注释之间的差异并相应地采取行动。但据我所知,这不能用于XML,因为它需要用注释字符包装内容。

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

对于XML,由于XML中的注释如何工作,它使用一对,这意味着只能进行块注释。但是,当您调用没有选择的命令时,它会假定选择包装整行。如果您有选择,那就是包装的内容。

解决此问题的一种方法是在切换注释之前将选区拆分为多行。您可以通过菜单中的Selection > Split into Lines执行此操作(这也将显示此命令的键绑定内容)。

Splitting selection into multiple 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文件中的情况下针对特定情况运行宏。