如果我按以下方式编写一个函数:
int foo(int bar)
{}
Sublime 可以foo
正确突出显示。但是,在这种情况下:
int foo
(int bar)
{}
foo
失去所有突出显示。
我喜欢 C++ 的一点是它不关心空格。有没有什么方法可以让 Sublime 正确地突出显示此代码?
编辑:
在获得一些指示并浏览默认语法文件后,出现以下情况:
<string>(?x)
(?: ^ # begin-of-line
|
(?: (?= \s ) (?<!else|new|return) (?<=\w) # or word + space before name
| (?= \s*[A-Za-z_] ) (?<!&&) (?<=[*&>]) # or type modifier before name
)
)
(\s*) (?!(while|for|do|if|else|switch|catch|enumerate|return|r?iterate)\s*\()
(
(?: [A-Za-z_][A-Za-z0-9_]*+ | :: )++ | # actual name
(?: (?<=operator) (?: [-*&<>=+!]+ | \(\) | \[\] ) ) # if it is a C++ operator
)
\s*(?=\()</string>
似乎是正则表达式出了问题。但是,我不明白为什么它没有得到我的代码;最后一行,\s*(?=\()
应该匹配括号前的任何数量的空格或换行符,不是吗?
答案1
Sublime Text 的语法高亮是完全可配置的。您可以创建默认 C++ 语法高亮规则的副本,对其进行改进,然后告诉 ST3 使用您的改进版本。
ST3 使用 Textmate 兼容的语法高亮规则,如下所述这里。如果你不喜欢直接在 Plist 上工作,你可以使用 JSON 或其他格式,然后使用AAA软件包开发(可轻松安装包控制)。
默认 C++ 包(包括语法高亮规则)位于C:\Program Files\Sublime Text 3\Packages\C++.sublime-package
。您的自定义包可以放在C:\Users\%USERNAME%\AppData\Roaming\Sublime Text 3\Packages\User
。最简单的方法是通过 ST 的菜单访问该位置:首选项 → 浏览包。