【问题标题】:How to define comment characters for React JSX in Sublime Text?如何在 Sublime Text 中为 React JSX 定义注释字符?
【发布时间】:2014-11-11 20:49:06
【问题描述】:

在 OSX 中,在 Sublime Text 3 (build 3065) 中,语法设置为 JavaScript(JSX) 或只是 JSX,我按常规 cmd+/ 注释掉选中的文本。

但是,当我想像这样包装选择时,ST3 默认为 // 注释字符:

{/* foobar selected text */}

我正在查看这里,但不知道要编辑什么:

/Users/admin/Library/Application Support/Sublime Text 3/Packages/User/JavaScript (JSX).tmLanguage

提前致谢! :)

【问题讨论】:

标签: sublimetext sublimetext3 reactjs react-jsx


【解决方案1】:

Packages/User 中创建一个名为Comments.tmPreferences 的XML 文件,其中包含以下内容(我假设您的语言的基本范围是source.jsx - 您可以在.tmLanguage 文件中找到它):

<?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.jsx</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>
        </array>
    </dict>
    <key>uuid</key>
    <string>F9BFFF1F-1999-4722-B094-52E8AFD234D1</string>
</dict>
</plist>

// 将在您点击 / 时保持默认评论前缀,但当您选择一些文本并点击 Shift/ 你将把它包裹在{/* blahblahblah */}

如果您想完全摆脱 //,请改用以下代码:

<?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.jsx</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_END</string>
                <key>value</key>
                <string> */}</string>
            </dict>
        </array>
    </dict>
    <key>uuid</key>
    <string>F9BFFF1F-1999-4722-B094-52E8AFD234D1</string>
</dict>
</plist>

【讨论】:

  • 谢谢! ...这似乎很适合做{/* */} cmets,但不适合撤消...当您点击command + /时,您的解决方案会留下卷曲,而插入符号在线,没有选择...典型的command + /行为删除所有评论字符。但我没有抱怨,这在编写 .jsx 时很有帮助
  • PS:对于其他人:我必须将 scope 更改为 source.js 而不是 source.jsx 才能使此解决方案起作用。我知道这会改变 .js 文件的注释行为,但作为前端开发人员,我主要处理 .jsx 语法。谢谢@MattDMo,现在接受你的回答。
  • 不知道你是否愿意,但我认为如果你把它变成一个真正的崇高包会很棒!感谢您的代码!
  • 键绑定在哪里定义?只是好奇,为什么它绑定到 ⌘Shift /
  • @SidaZhou 它在默认键绑定中定义。转到 Preferences -> Key Bindings-Default 并搜索 comment
【解决方案2】:

虽然上一个答案部分解决了问题,但它并没有正确删除 cmets。

我在https://github.com/borela/naomi 中添加了一个plugin,它可以正确检测要使用的所需注释类型,它适用于行和块cmets。

【讨论】:

    猜你喜欢
    • 2018-05-04
    • 2013-08-16
    • 2017-08-21
    • 2014-01-23
    • 2018-11-23
    • 2017-02-20
    • 2014-11-12
    • 2014-11-23
    • 1970-01-01
    相关资源
    最近更新 更多