Vim和Emacs的Solarized主题区别

7
我知道已经有大量关于Vim/Emacs和Solarized的问题,所以我有点犹豫要再添加一个,但我似乎找不到任何一个解决这个确切问题的问题。
问题在于,当两个编辑器都设置为使用solarized-dark主题时,同一文件在Vim中看起来与在Emacs中看起来非常不同。而我无法弄清楚这是Solarized的问题还是Vim和Emacs之间的根本差异。
以下是我正在处理的内容:

为了让Emacs正确显示背景颜色,我必须明确设置TERM为xterm-16color。然而,无论我是在终端还是它们各自的GUI中运行编辑器(gvim和emacs没有-nw标志),颜色看起来都完全相同。

这是Vim在左侧,Emacs在右侧的屏幕截图:

最终,我希望将Emacs的颜色与Vim的颜色完全一致。这是否可能?如果是,那么是调整Emacs版本的配色方案的问题吗?还是这只是两个编辑器之间根本性的差异,无法改变?
2个回答

4

我不写Ruby,但我从Emacs的角度来看待这种情况的一般方法是:

  • 将光标移动到你认为没有正确显示的单词上,然后按 M-xcustomize-face。这将在迷你缓冲区中自动填充面部名称,并在按下 RET 后打开自定义缓冲区,您可以更改如何呈现该面部。看起来至少可以通过这种方式消除一些差异。

  • 主要编辑模式通常将面(通常是来自字体锁定的面之一)与目标语言中的某个词法组相关联。您需要调查 Ruby 模式如何将面与语言的语法元素相关联以及哪些选项。可能全局调整面会过于极端(可能会影响其他模式),因此如果您可以仅调整 Ruby 模式以将不同的语法组与面相关联而不修改面,则是首选选择。

  • 您可以调查装饰的级别。通常,Emacs 中的语言模式使用 Font Lock 模式来绘制文本,某些模式根据级别提供更多或更少的颜色。更多信息请参见:http://www.gnu.org/software/emacs/manual/html_node/elisp/Levels-of-Font-Lock.html

  • 还有可能 Ruby 模式最初没有强调你想要强调的某些字符(数字符号和引号)。如果无法通过调整语法元素与面的关联以及装饰级别来实现此目的,则可以尝试在 Font Lock 模式中添加更多关键字,如此处所述:http://www.gnu.org/software/emacs/manual/html_node/emacs/Font-Lock.html

  • 看起来您还想以某种方式显示空格字符 http://emacswiki.org/emacs/ShowWhiteSpace#toc7 这里有一些关于如何做到这一点的信息,它还提供了有关显示最大行长度的边距的信息。

  • 您可以使用 M-xlinum 命令切换行号的显示。

顺便提醒一下,图形用户界面版本和终端版本可能具有不同的着色方案。终端版本可能总体使用较少的颜色,并且通常会追求更高的对比度,而GUI版本则不同。


4
使用相同的Solarized配色方案,两个编辑器将使用相同的颜色调色板(即所选颜色集)。仍然不同的是,编辑器解析文件类型的语法(即检测到多少种不同的语法元素)以及如何将解析的语法元素分组为高亮显示组。
Vim(我不能代表Emacs)使用特定于文件类型的语法组(例如vimCommand),然后将其链接到一组固定的高亮定义(此示例中为Statement)。配色方案提供了这些定义的颜色;可以在:help group-name中找到惯例(但并不是每个语法定义都完全遵循它们)。
这对你意味着什么?您可以比较差异并(在Vim中)通过:hi link ...命令自定义映射,但这需要为您使用的每种文件类型进行大量工作。而且它仍然取决于解析的方式。我猜你最终会决定选择其中一个编辑器;与此同时,我不会太过担心差异。

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