我在 Sublime 中有一个烦人的行为。
当我开始输入一行时...
using namespace SomeNamespace;
关键字“using”和“namespace”已正确着色为关键字着色。然后,当我将分号添加到行尾时, namespace 关键字变为白色(默认文本颜色)。我知道这不是那么重要,但它确实让我很烦。
以前有没有人注意到这种行为?代码编译时没有错误或警告,所以我知道 sublime 没有检测到一些代码问题。
有没有人对如何解决这个问题有任何建议?
最佳答案
问题出在 C++ 语法定义中的这个特定正则表达式中:
\b(namespace)\s+([A-Za-z_][_A-Za-z0-9:]*\b)?+(?!\s*?(;|=|,))
最后,在负前瞻中 - (?!...)
- 我们看到分号被排除在匹配之外,这意味着如果分号出现在行,没有匹配项。
要修复它,您需要安装非常有用的 PackageResourceViewer
来自 Package Control 的插件。然后,打开 Command Palette,键入 prv
调出 PackageResourceViewer 选项,选择 Extract Package
一个,然后向下滚动并选择 C++
。现在,通过选择 Preferences -> Browse Packages...
打开的目录中将有一个 C++
目录。进入那个目录,你会看到一堆文件。根据您使用的 Sublime Text 3 版本,您需要在 Sublime 中打开 C++.tmLanguage
或 C++.sublime-syntax
。 .tmLanguage
格式是 XML,因此您可以根据需要选择它来进行语法高亮显示,而 .sublime-syntax
文件是 YAML。
打开相应的文件(您将拥有一个,而不是两者),搜索上面的正则表达式,或者只搜索 namespace
,您应该很容易找到它。删除接近末尾的 ;|
,使整个事情:
\b(namespace)\s+([A-Za-z_][_A-Za-z0-9:]*\b)?+(?!\s*?(=|,))
保存文件,就是这样!你的 C++ 源文件应该立即更新它们的行为 - 如果没有,只需关闭并重新打开它们,在最坏的情况下你可以关闭它们,重新启动 Sublime,然后重新打开它们。
关于c++ - Sublime C++ 命名空间关键字配色方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33061475/