c++ - Sublime C++ 命名空间关键字配色方案

标签 c++ sublimetext3

我在 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++.tmLanguageC++.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/

相关文章:

c++ - 我如何在一段时间或 for 循环中使用 .find() 并且每次都没有给出相同的发现值

C++ boost ptree 重命名键

sublimetext3 - Sublime Text 2 : How to Page Up/Down without moving the cursor

javascript - 为什么我在 Sublime Text 3 中使用 node.js 设置的 JavaScript 构建器没有显示构建结果?

c++ - CUDA curand "An illegal memory access was encountered"

c++ - 使用 Friend 类的构造函数

c++ - 将内联加速 void a(string b) { cout << b; }

javascript - Sublime Text 3 在按 Enter 键后仅在 javascript 中的括号中缩进一个额外的制表符

json - 正则表达式用_(Sublime)替换带引号的字符串中的空格

search - 有没有办法在 sublime 3 中显示和搜索所有配置的键盘快捷键?