我使用的是默认设置。我正在寻找一个简单的图例,上面写着“这个颜色表示那个”或“注释是蓝色,函数是绿色”,等等。我认为这个需求对所有人来说都是显而易见的,但我找不到它(gedit 帮助毫无用处)。
此外,从周围看,似乎有一种方法可以设置我自己的配色方案,但我怎么知道我已将所有可能的术语和形式着色? 有没有一个列表?
例如,我不想错过字符串和函数并让它们最终都变成黑色,因此我无法获得语法突出显示的好处 - 我想无论如何我都无法获得语法突出显示的好处,因为我不知道我现在看到的所有颜色意味着什么。
谢谢。
编辑/更新
@ Maythux 这是否仅适用于 gedit 本身,而不适用于 Python?我创建了一个文本文件,并以 .py 扩展名保存。例如:
import this: | 'import' is purple <br/>
var = some_variable | both sides of the equation are black <br/>
'This is a string' | It is pink <br/>
for is a special word, so is in | 'for', 'is', 'is', and 'in' are all blood red <br/>
"""This is still a string""" | Triple quotes are pink <br/>
# This is a comment | but this string is dark blue <br/>
这些颜色规则从何而来?解释什么颜色代表什么的图例又在哪里?PS-我讨厌降价
答案1
我知道我来晚了,但我也遇到过类似的问题,而且这个帖子是第一个出现的。所以我想我应该添加一个详尽的答案来解释发生了什么。
我发现有关突出显示如何工作的最佳文档是 GTKSourceView 的文档(Gedit 用于突出显示): https://www.manpagez.com/html/gtksourceview/gtksourceview-3.12.2/ch02.php 但它并没有直接回答 OP 的问题。
因此,为了更直接地回答 OP 的问题。我不知道一个简单的列表,但是如果您对突出显示的工作原理有所了解,您就可以找到所需的信息。
突出显示的工作原理有两个重要部分:
.lang 文件(每个支持的编程语言都有一个)定义了 Gedit(或者更确切地说 GTKSourceView)应如何理解编程语言的语法。例如,在 python.lang 中定义,# 标记注释,“for”、“if”和“else”是关键字,“...”是字符串等等。
然后,颜色方案会根据您当前使用的语言的 .lang 文件中注释、关键字、字符串等的定义方式,告诉 Gedit 如何为通用注释、通用关键字等着色。
您正在使用的语言在 Gedit 的底部指定:语言选择对话框目前为 python (2.x)
您正在使用的配色方案是在以下位置设置的:菜单 -> 首选项 -> 字体和颜色 -> 配色方案颜色方案对话框
.lang 文件(可能)位于:
/usr/share/gtksourceview-3.0/styles/language-specs
或者
/usr/share/gtksourceview-4/styles/language-specs
取决于您的 GTK 版本。
并且颜色方案/样式如下:
/usr/share/gtksourceview-3.0/styles/
或者
/usr/share/gtksourceview-4/styles/
这又取决于你的 GTK 版本。
那么,回答 OP 的问题。您可以转到您感兴趣的语言的 .lang 文件,例如 python.lang 或 python3.lang。在顶部,您将找到如下所示的样式列表:
<style id="keyword" name="Keyword" map-to="def:keyword"/>
这表示,python 关键字(在 python.lang 文件中稍后定义)的着色样式应该以与“def:keyword”相同的方式着色,这是任何受支持语言中关键字的默认设置(“def”代表默认,def: 指的是在 def.lang 中找到的默认样式)。
然后,如果您在如下块中搜索“style-ref="keyword"”,就可以找到 Python 中关键字的定义:
<context id="keywords" style-ref="keyword">
<keyword>and</keyword>
<keyword>assert</keyword>
...
这里的 'id="keywords" 表示接下来的条目是我们定义的 python 关键字,'style-ref="keyword" 表示下面列出的内容要用 python 关键字着色样式进行着色,然后列出了关键字:“and”、“assert”、“if”、“for”等等。
现在,我们从 .lang 文件中知道了不同样式的名称以及每种样式对应的颜色。现在,我们可以在配色方案中指定所有抽象样式要使用的实际颜色,这些颜色已在 .lang 文件中定义。
在颜色主题文件(例如 tango.xml)中,你会发现类似这样的行:
<style name="def:keyword" foreground="#0000ff"/>
“def:keyword” 是默认的关键字样式,用于根据 .lang 文件为事物着色。而 'foreground="#0000ff" 意味着文本将用 RGB 十六进制值 00-00-ff 着色 - 即纯蓝色。
这会将 python 关键字涂成蓝色,因为 python.lang 中定义的关键字样式被映射到 def:keyword ,我们现在声明它应该是蓝色。
它还应该将所有其他语言的关键字涂成蓝色(只要它们也映射到其 .lang 文件中的 def:keyword)。
您还可以通过以下方式专门为 Python 关键字指定颜色:
<style name="python:keyword" foreground="#00ff00"/>
冒号前面的部分是语言的 id(写在 .lang 文件的顶部),冒号后面的部分是该 .lang 文件中样式的名称。
未指定颜色的样式将由 Gnome/Ubuntu 的默认颜色主题决定,遗憾的是我无法理解 ¯_(ツ)_/¯
答案2
这与你在 gedit 的字体和颜色偏好设置中选择的配色方案有关。对我来说,我选择经典
现在来看看它是如何突出显示打开颜色方案的 xml
gedit /usr/share/gtksourceview-3.0/styles/classic.xml
以下是输出示例:
<!-- Bracket Matching -->
<style name="bracket-match" foreground="#white" background="#grey" bold="true"/>
<style name="bracket-mismatch" foreground="#white" background="#red" bold="true"/>
<!-- Search Matching -->
<style name="search-match" background="yellow"/>
<!-- Comments -->
<style name="def:comment" foreground="blue"/>
<style name="def:shebang" foreground="blue" bold="true"/>
<style name="def:doc-comment-element" italic="true"/>
然后你就可以知道灰色用于括号匹配,蓝色用于评论,黄色用于搜索等......
您可以从以下路径中找到的 xml 文件中检查其他方案:
/usr/share/gtksourceview-3.0/styles/
另外,作为提示,您可以使用此 xml 随意更改颜色,以便您可以根据自己的需要或喜好自定义每个方案