如何修复升华文本2在TCL中的转义字符?

如何修复升华文本2在TCL中的转义字符?,tcl,highlight,sublimetext2,Tcl,Highlight,Sublimetext2,下面两行代码似乎打破了TCL的语法色彩 regsub -all {/} $original {\\\\} target # The last } is being escaped set grep_keyword [string trim $grep_keyword {"}] # The " character is starting a new quote 当我打开文件时,代码是这样的。有没有办法解决这个问题?虽然从技术上讲,问题出在Sublime Text 2上(您已经发现

下面两行代码似乎打破了TCL的语法色彩

regsub -all {/} $original {\\\\} target      # The last } is being escaped

set grep_keyword [string trim $grep_keyword {"}]   # The " character is starting a new quote

当我打开文件时,代码是这样的。有没有办法解决这个问题?

虽然从技术上讲,问题出在Sublime Text 2上(您已经发现,在某些特殊情况下,正确突出显示Tcl不是很简单),但将Tcl代码更改为语义等效的代码更容易

regsub -all {/} $original "\\\\\\\\" target

可以考虑使用<代码>字符串映射< /代码>第一个,当然:

set target [string map {"/" "\\\\"} $original]
# or this:
#    set target [string map {/ {\\}} $original]
# but I'm not sure if the editor will like that...

所以,我又回到这一点上,努力解决我的问题。我修改了TCL的tmLangauge文件。}字符被识别为结束大括号。我刚才也在这个定义中添加了\}

<key>braces</key>
<dict>
    <key>begin</key>
    <string>(?:^|(?&lt;=\s))\{</string>
    <key>comment</key>
    <string>matches a single brace-enclosed word</string>
    <key>end</key>
    <string>\}([^\s\]]*)</string>
    <key>endCaptures</key>
    <dict>
        <key>1</key>
        <dict>
            <key>name</key>
            <string>invalid.illegal.tcl</string>
        </dict>
    </dict>
    <key>patterns</key>
    <array>
        <dict>
            <key>match</key>
            <string>\\[{}\n]</string>
            <key>name</key>
            <string>constant.character.escape.tcl</string>
        </dict>
        <dict>
            <key>include</key>
            <string>#inner-braces</string>
        </dict>
    </array>
</dict>
大括号
开始
(?:^|(?=\s))\{
评论
匹配一个括号内的单词
结束
\}([^\s\]]*)
尾声
1.
名称
无效。非法。tcl
模式
比赛
\\[{}\n]
名称
constant.character.escape.tcl
包括
#内支架
在上面,我对RegEx做了如下修改:

<string>\}([^\s\]]*)|\\}\s</string>
\}([^\s\]]*)\\\}\s

您是想修复代码,还是想修复Sublime Text 2?我想我可以修复代码,但总有破坏某些东西的风险。这些脚本是“任务关键型”系统的一部分,如果系统崩溃,情况会非常糟糕。非常感谢您的建议。这可能就是我最后要做的。
<string>\}([^\s\]]*)|\\}\s</string>