我正在使用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上搜索此问题但我找不到任何有用的信息。你能给我一些建议吗?
答案 0 :(得分:2)
通常,Sublime可以配置为知道行和块注释之间的差异并相应地采取行动。但据我所知,这不能用于XML,因为它需要用注释字符包装内容。
更具体地说,注释的配置选项指定用于纯行注释的TM_COMMENT_START或用于块注释的TM_COMMENT_START和TM_COMMENT_END。如果两者都存在,则toggle命令根据内容和上下文选择正确的。
对于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文件中的情况下针对特定情况运行宏。