更改Emacs语法高亮颜色

72

我正在运行 Emacs,并在 C++ 模式和 PHP 模式下编辑文件。 我喜欢语法高亮的概念,但默认颜色实在令人难以忍受。 有些颜色太暗了,很难辨认。 有没有最简单的方法可以更改它们的值? 在网上似乎找不到任何关于这个问题的信息。 我甚至不介意更改二进制文件,因为我正在编译自己的 Emacs。 我只想找到说蓝色是 #0000FF 的位置,并将其更改为例如 #AAAAFF。

5个回答

70

我发现在这种情况下,使用color-theme最容易了。

但如果你不想这样做,把光标放在问题文本上,然后按M-x customize-face,它应该默认为光标所在的字体。

请参阅49.1.6定制特定项目


一个不错的配色方案 - Benny
2
问题是,有一种颜色我无法辨认(这是一种深蓝色,在黑色背景上几乎看不见),并且当我键入M-x customize-face时,它显示的文本就是这种颜色!(此外,似乎ColorTheme链接存在问题) - Michael
我试图修复链接,使其能够正常工作,但是当从这个页面跟踪它时,它仍然无法工作!!! - Michael
2
如果 M-x customize-face 默认为 hl-line,那是因为它标记了活动行的高亮线。要获取“有问题”的文本的真实面貌,请执行 M-x global-hl-line-mode 以临时禁用高亮线。 - rgtk

26
两种方法 - 你可以安装包color-theme,它有很多漂亮的方案可供选择,而且手动操作更容易。手动操作如下(在你的.emacs文件中)
(custom-set-faces
   custom-set-faces was added by Custom.
   If you edit it by hand, you could mess it up, so be careful.
   Your init file should contain only one such instance.
   If there is more than one, they won't work right.
  '(default ((t (:inherit nil :stipple nil :background "lightyellow2" :foreground "gray20" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight bold :width normal :family "liberation mono"))))
  '(background "blue")
  '(font-lock-builtin-face ((((class color) (background dark)) (:foreground "Turquoise"))))
  '(font-lock-comment-face ((t (:foreground "MediumAquamarine"))))
  '(font-lock-constant-face ((((class color) (background dark)) (:bold t :foreground "DarkOrchid"))))
  '(font-lock-doc-string-face ((t (:foreground "green2"))))
  '(font-lock-function-name-face ((t (:foreground "SkyBlue"))))
  '(font-lock-keyword-face ((t (:bold t :foreground "CornflowerBlue"))))
  '(font-lock-preprocessor-face ((t (:italic nil :foreground "CornFlowerBlue"))))
  '(font-lock-reference-face ((t (:foreground "DodgerBlue"))))
  '(font-lock-string-face ((t (:foreground "LimeGreen"))))

...

etc. etc.

You can also type

`M-x customize-face RET`

这将为您提供所有自定义设置,最终会在您的.emacs文件中结束。


21
将光标放在您想改变的面孔("颜色")上。按下 C-u C-x =。这将告诉您该位置存在哪些面孔,并且可以让您单击以进行自定义。保存您的定制内容。

1
我对应该在定制屏幕中输入什么毫无头绪。首先,一些重要的内容采用了一种我看不清的字体颜色(这也是我首要需要解决的问题!),其次,我没有看到任何明显的关于颜色或如何更改它们的参考资料。 - Michael
@Michael:如果您无法阅读“自定义”中的文本,则可以从一个干净的Emacs会话中使用它:使用emacs -Q启动Emacs。如果您能够阅读文本,则应该能够看到用于定义您正在自定义的面的属性的复选框。单击链接“显示所有属性”以显示所有属性。根据需要选中或取消选中任何属性。当您选中一个框时,您将看到其当前值。如果选中了“背景”或“前景”属性,则可以使用旁边的“选择”按钮选择该属性的不同颜色。 - Drew

3
如果您不关心颜色高亮,或者之前的答案对您无效(或需要花费太多时间和精力来理解),这里有一个非常简单的解决方案,可以完全摆脱颜色问题。
输入以下内容即可消除颜色:
M-x global-font-lock-mode 您还可以在中间步骤中执行此操作,以使您能够实际查看屏幕上的所有内容并尝试以上任何答案。在我的情况下,这非常有用,因为某些关键文本的颜色(例如,M-x提示)本身几乎不可见,它们将允许我更改颜色。
如果您希望更改是永久性的,可以将其添加到您的.emacs文件中:
(setq-default global-font-lock-mode nil)

2
从Emacs 24.1开始,你可以使用M-x customize-themes来选择一个颜色主题。
Emacs自带了十几种不同亮度和色彩的主题,所以你很可能会找到大致符合你喜好的主题。
你还可以在MELPA中找到更多可安装的颜色主题,但是https://peach-melpa.org/这个网站好像挂了。你可以在melpa.org上搜索"theme",但它不会显示任何截图。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接