在Sublime Text中启用自动注释以获得自定义语法

Set*_*ton 15 sublimetext sublimetext2 sublimetext3

我在Sublime Text中为自定义语言创建了一个.tmLanuage文件.一切都运作良好,除了我似乎无法自动评论工作.我似乎无法在Sublime Text文档或Google上找到有关如何执行此操作的任何内容,但也许这是因为我没有使用正确的关键字.

让我解释一下我的意思.假设我有以下C代码:

int i = 1;
i += 2;
Run Code Online (Sandbox Code Playgroud)

如果我在Sublime Text中突出显示并按下ctrl+/,则会更改为

// int i = 1;
// i += 2;
Run Code Online (Sandbox Code Playgroud)

同样,对于Python代码:

i = 1
i += 2
Run Code Online (Sandbox Code Playgroud)

会成为

# i = 1
# i += 2
Run Code Online (Sandbox Code Playgroud)

显然,Sublime Text必须知道语言语法才能选择正确的注释字符,这就是为什么我假设我需要在我的.tmLanguage文件中添加一些内容才能使其工作.我查看了Sublime Text附带的C.tmLanguage和Python.tmLanguage文件,没有任何内容跳出来作为执行此自动注释的代码.

我有什么要添加到我的.tmLanguage文件以在Sublime Text中启用此功能?或者,是否有一些其他文件我必须添加/修改才能启用此功能?

d_r*_*ail 15

看一下"评论(C++).tmPreferences",您应该能够弄清楚如何根据语法编辑它.

  • 将语法的"scopeName"添加到范围
  • TM_COMMENT_START =行注释
  • TM_COMMENT_START_2/TM_COMMENT_END_2 =阻止评论

评论(C++).tmPreferences:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>name</key>
    <string>Comments</string>
    <key>scope</key>
    <string>source.your_syntax</string>
    <key>settings</key>
    <dict>
        <key>shellVariables</key>
        <array>
            <dict>
                <key>name</key>
                <string>TM_COMMENT_START</string>
                <key>value</key>
                <string>// </string>
            </dict>
            <dict>
                <key>name</key>
                    <string>TM_COMMENT_START_2</string>
                <key>value</key>
                <string>/*</string>
            </dict>
            <dict>
                <key>name</key>
                <string>TM_COMMENT_END_2</string>
                <key>value</key>
                <string>*/</string>
            </dict>
            <dict>
                <key>name</key>
                <string>TM_COMMENT_DISABLE_INDENT_2</string>
                <key>value</key>
                <string>yes</string>
            </dict>
        </array>
    </dict>
Run Code Online (Sandbox Code Playgroud)