【问题标题】:Sublime C++ namespace keyword color schemingSublime C++ 命名空间关键字颜色方案
【发布时间】:2015-10-11 04:20:45
【问题描述】:

我在 Sublime 中有一个烦人的行为。

当我开始输入该行时......

using namespace SomeNamespace;

关键字“使用”和“命名空间”被正确着色为关键字着色。然后,当我将分号添加到行尾时,命名空间关键字变为白色(默认文本颜色)。我知道这并不重要,但它真的让我很烦。

以前有没有人注意到这种行为?代码编译时没有错误或警告,所以我知道 sublime 没有检测到一些代码问题。

有人对如何解决这个问题有任何建议吗?

【问题讨论】:

  • 有什么问题?
  • 命名空间关键字未着色指定关键字颜色。添加分号后,命名空间关键字变为白色,而不是关键字着色。但是在我添加分号之前它具有正确的颜色。
  • 哦,我明白了,我刚刚启动了 Sublime 并亲眼看到了。让我看看引擎盖下。同时,快速之前/之后的屏幕截图会有所帮助。
  • 你使用的是什么版本(Sublime 的版本)?

标签: c++ sublimetext3


【解决方案1】:

问题在于 C++ 语法定义中的这个特殊正则表达式:

\b(namespace)\s+([A-Za-z_][_A-Za-z0-9:]*\b)?+(?!\s*?(;|=|,))

在最后,在否定的前瞻中 - (?!...) - 我们看到分号被排除在匹配之外,这意味着如果分号出现在行的最后,则没有匹配。

要修复它,您需要从 Package Control 安装非常有用的 PackageResourceViewer 插件。然后,打开命令面板,输入 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,然后重新打开它们。

【讨论】:

  • 修复了它。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-07-21
  • 2010-09-05
  • 2010-09-17
  • 2016-12-25
  • 1970-01-01
  • 2023-03-24
相关资源
最近更新 更多