我可以在Gedit中设置默认的语法高亮吗?

在保存gedit文档之前,语法高亮功能是关闭的。这当然有很好的理由--如果某些单词随机显示不同颜色,人们可能会感到困惑。但对于我的目的来说,我几乎只使用gedit进行HTML编辑。

很多时候,我会将代码片段粘贴到新的gedit文档中进行快速编辑,然后我必须手动设置语法着色为HTML。其他时候,我打开ColdFusion(.cfm)文档,但gedit显然无法识别,所以我又得手动设置颜色为HTML。如果我能找到一种方法告诉gedit自动为新文档和没有被识别文件扩展名的文档使用HTML语法高亮,那么这两个不便都可以解决。这种可能吗?


我也在想,是否可以像SciTE一样在不保存文件的情况下切换不同的语言。这会节省我的时间。 - nickguletskii
4个回答

你至少可以通过以超级用户的权限编辑“/usr/share/gtksourceview-2.0/language-specs/”中的“html.lang”文件,在HTML语法着色方案中加入文件扩展名。所以,假设你想要给cfm文件添加HTML语法高亮显示,你需要将下面这行代码进行更改: *.html;*.htm (默认为“html.lang”),更改为: *.html;*.htm;*.cfm

谢谢!这个方法确实让gedit为我的ColdFusion文件添加了语法着色。 - Michael Martin-Smucker
2我真希望能给这个答案多加几个赞。我刚刚又用这个答案来为LESS和SASS文件添加CSS高亮显示。 - Michael Martin-Smucker
1我喜欢自己在用户目录中复制和编辑.lang的想法。 - jozxyqk
1@michaelms 我给这篇帖子和你的评论点了赞,因为我在gedit中通过编辑sudo nano /usr/share/gtksourceview-3.0/language-specs/css.lang并将*.less和*.sass添加到globs属性中,为我的LESS文件添加了CSS语法高亮:<property name="globs">*.css;*.CSSL;*.less;*.sass</property> - LunkRat
你可能需要根据不同版本的gtksourceview来修改路径。你也可以将文件复制到个人配置文件夹中,以防止其被覆盖。请参考下面5chdn的回答(http://askubuntu.com/a/310553/37574)。 - mwfearnley
我使用的是Ubuntu 22.10,但在/usr/share/gtksourceview-2.0/language-specs/目录下找不到html.lang文件,只有nemo_action.langnemo_search_helper.lang。更新:算了,看来现在是在gtksourceview-5.0中了。 :) - odigity

你可以在你的$HOME目录下创建自己的语言定义文件。不建议编辑gtk语言规范,因为每次gtksourceview更新都会将其覆盖

将你的语言规范文件复制到你的主目录下:

$ cp /usr/share/gtksourceview-3.0/language-specs/html.lang ~/.local/share/gtksourceview-3.0/language-specs/

然后,将您自定义的文件格式,如.cfm,添加到扩展名列表中:
<property name="globs">*.html;*.htm;*.cfm</property>

那样,gedit将会在您的自定义文件格式上使用自动语法高亮,并且gtk更新不会覆盖您的自定义更改。

1这是一个比所选答案更好的选择。在可能的情况下,请在本地应用更改。 - nightcod3r
但是gedit如何识别$HOME中的复制文件呢?我该如何告诉gedit需要查看$HOME中的.lang文件呢?提前感谢。 - Srikrishnan Suresh

这是不可能的,除非修改Gedit的源代码或编写一个插件来覆盖默认设置。默认的语法高亮方案是硬编码的。

感谢你指引我正确的方向。在我意识到gedit现在依赖于gtk+ 3之前,我克隆了最新的gedit并开始探索。这可能会变成比我预期的更大的麻烦。;-) - Michael Martin-Smucker
还有一件事:你知道language的有效取值吗?我浏览了geditgtksourceview的源代码,但是没有找到任何看起来像是语言名称的东西(不过我的C技能几乎不存在,可能是因为这个原因)。 - Michael Martin-Smucker
1@MichaelMS 我不太确定,但如果你打算投入一些努力解决问题,我真的认为最简单的方法可能就是在示例Python插件中嵌入一个 set_language 调用。你可以使用 get_language 来确定适合HTML源代码高亮的正确值。 - ændrük
我为使此默认配置可配置创建了一个功能请求,您可以在此处关注它:https://gitlab.gnome.org/GNOME/gedit/-/issues/492 - Erik Brendel

文件中存在冲突: /usr/share/gtksourceview-3.0/language-specs/sml.lang/usr/share/gtksourceview-3.0/language-specs/xml.lang

两个文件都与扩展名.sml相关联。 要自动获取标准ML语法高亮,请从/usr/share/gtksourceview-3.0/language-specs/xml.lang中删除.sml