VSCode 配置语法突出显示以匹配样式指南
VSCode configure syntax highlighting to match a style guide
如何更改 VSCode 中的语法突出显示,使其符合特定的风格指南?比如我想坚持Google C++ style guide,其中成员变量写成some_member_variable_
。当我使用此约定时,VSCode 不会将该名称着色为与标准文本不同的颜色。但是我有一些使用 mSomeMemberVariable
约定的代码,并且 的颜色与其他文本不同。有没有办法更好地配置它?
TL;DR >没有简单的方法来应用 Google 风格的语法高亮,除非你找到一个现有的 cpp Textmate 语法文件(我找不到一)。然而,以下是您自己实施的方式。
查看 CPP 语法文件 (cpp.tmLanguage.json
),我们发现没有范围模式捕获 Google 样式的成员变量。您可以添加一个:
{ // this is the existing scope that matches mSomeMemberVariable
"match": "\b(f|m)[A-Z]\w*\b",
"name": "variable.other.readwrite.member.cpp"
},
{ // you can add this scope to match some_member_variable_
"match": "\b([a-z][a-z\d]*_)+\b",
"name": "variable.other.readwrite.member.google.cpp"
}
现在您可以通过确保其范围(或任何外部范围,如 variable.other.readwrite.member
)在您主题的 .json
文件中有一个主题规则来确保它的样式。
下面是更详细的解释。从here我们看到:
There are two components to syntax highlighting:
- Breaking text into a list of tokens and scopes using a grammar
- Then using a theme to map these scopes to specific colors and styles
首先我们需要弄清楚哪个 "scope" 正在设置成员变量的样式:
- 命令面板 >
ctrl+shift+p
> Developer: Inspect TM Scopes
- 点击成员变量名(
mSomeMemberVariable
)
- 最具体的范围是最上面的条目。在这篇文章中,它被称为
variable.other.readwrite.member.cpp
名字的.cpp
部分告诉我们作用域是在C++文法(syntax)中定义的。截至目前,用于 cpp 语法的文件可以在 [applications_folder]/code/resources/app/extensions/cpp/syntaxes/cpp.tmLanguage.json
下找到(参见 the github repo 中的文件)。
在语法定义文件中搜索范围名称,我们发现以下模式:
{
"match": "\b(f|m)[A-Z]\w*\b",
"name": "variable.other.readwrite.member.cpp"
}
要查看上述范围应用的样式,我们查看活动主题的 *.json
文件。例如,如果您使用 Dark+(默认深色) 主题,您可以在 extensions/theme-defaults/themes/dark_plus.json
找到主题 json 文件。在此文件中,我们找到以下文本匹配主题规则:
{
"name": "Variable and parameter name",
"scope": [
"variable",
"meta.definition.variable.name",
"support.variable",
"entity.name.variable"
],
"settings": {
"foreground": "#9CDCFE"
}
}
从这条规则我们可以看出,突出显示是由 variable
范围应用的。 (请注意,所有外部范围样式都应用于内部样式,除非您专门指定内部范围样式来覆盖它)
现在您的一个选择是将您自己的范围添加到现有文件中。另一种方法是编辑现有范围以匹配 Google 样式成员变量正则表达式模式。另一种选择是根据 CPP 扩展样式文件定义您自己的语法并创建您自己的 Google CPP VSCode 扩展。例如,采用第一种方法,您可以按如下方式编辑 cpp.tmLanguage.json
:
{
"match": "\b([a-z][a-z\d]*_)+\b",
"name": "variable.other.readwrite.member.google.cpp"
}
P.S。编辑 json 文件后,重新启动 VSCode 以使更改生效。
如何更改 VSCode 中的语法突出显示,使其符合特定的风格指南?比如我想坚持Google C++ style guide,其中成员变量写成some_member_variable_
。当我使用此约定时,VSCode 不会将该名称着色为与标准文本不同的颜色。但是我有一些使用 mSomeMemberVariable
约定的代码,并且 的颜色与其他文本不同。有没有办法更好地配置它?
TL;DR >没有简单的方法来应用 Google 风格的语法高亮,除非你找到一个现有的 cpp Textmate 语法文件(我找不到一)。然而,以下是您自己实施的方式。
查看 CPP 语法文件 (cpp.tmLanguage.json
),我们发现没有范围模式捕获 Google 样式的成员变量。您可以添加一个:
{ // this is the existing scope that matches mSomeMemberVariable
"match": "\b(f|m)[A-Z]\w*\b",
"name": "variable.other.readwrite.member.cpp"
},
{ // you can add this scope to match some_member_variable_
"match": "\b([a-z][a-z\d]*_)+\b",
"name": "variable.other.readwrite.member.google.cpp"
}
现在您可以通过确保其范围(或任何外部范围,如 variable.other.readwrite.member
)在您主题的 .json
文件中有一个主题规则来确保它的样式。
下面是更详细的解释。从here我们看到:
There are two components to syntax highlighting:
- Breaking text into a list of tokens and scopes using a grammar
- Then using a theme to map these scopes to specific colors and styles
首先我们需要弄清楚哪个 "scope" 正在设置成员变量的样式:
- 命令面板 >
ctrl+shift+p
>Developer: Inspect TM Scopes
- 点击成员变量名(
mSomeMemberVariable
) - 最具体的范围是最上面的条目。在这篇文章中,它被称为
variable.other.readwrite.member.cpp
名字的.cpp
部分告诉我们作用域是在C++文法(syntax)中定义的。截至目前,用于 cpp 语法的文件可以在 [applications_folder]/code/resources/app/extensions/cpp/syntaxes/cpp.tmLanguage.json
下找到(参见 the github repo 中的文件)。
在语法定义文件中搜索范围名称,我们发现以下模式:
{
"match": "\b(f|m)[A-Z]\w*\b",
"name": "variable.other.readwrite.member.cpp"
}
要查看上述范围应用的样式,我们查看活动主题的 *.json
文件。例如,如果您使用 Dark+(默认深色) 主题,您可以在 extensions/theme-defaults/themes/dark_plus.json
找到主题 json 文件。在此文件中,我们找到以下文本匹配主题规则:
{
"name": "Variable and parameter name",
"scope": [
"variable",
"meta.definition.variable.name",
"support.variable",
"entity.name.variable"
],
"settings": {
"foreground": "#9CDCFE"
}
}
从这条规则我们可以看出,突出显示是由 variable
范围应用的。 (请注意,所有外部范围样式都应用于内部样式,除非您专门指定内部范围样式来覆盖它)
现在您的一个选择是将您自己的范围添加到现有文件中。另一种方法是编辑现有范围以匹配 Google 样式成员变量正则表达式模式。另一种选择是根据 CPP 扩展样式文件定义您自己的语法并创建您自己的 Google CPP VSCode 扩展。例如,采用第一种方法,您可以按如下方式编辑 cpp.tmLanguage.json
:
{
"match": "\b([a-z][a-z\d]*_)+\b",
"name": "variable.other.readwrite.member.google.cpp"
}
P.S。编辑 json 文件后,重新启动 VSCode 以使更改生效。