6

我知道已经有过多的 Vim/Emacs 和 Solarized 问题,所以我有点犹豫要不要再添加一个,但我似乎找不到任何可以解决这个确切问题的问题。

问题是当两个编辑器都设置为使用 solarized-dark 主题时,同一个文件在 Vim 中与在 Emacs 中看起来非常不同。我无法弄清楚这是 Solarized 的问题还是仅仅是 Vim 和 Emacs 之间的根本区别。

这是我正在使用的内容:

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

这是一个截图,左边是 Vim,右边是 Emacs:

在此处输入图像描述 大版本

最终,我想让 Emacs 颜色看起来与 Vim 颜色完全一样。这可能吗?如果是这样,是否需要调整 Emacs 版本的配色方案?或者,这只是两个无法更改的编辑器之间的根本区别吗?

4

2 回答 2

4

使用相同的Solarized色彩方案,您将在两个编辑器中获得相同的调色板(即一组选定的颜色)。仍然不同的是编辑器如何解析文件类型的语法(即检测到多少不同的语法元素),以及如何将解析的语法元素分组以突出显示组。

Vim(我不能代表 Emacs)使用特定于文件类型的语法组(例如vimCommand),然后将其链接到一组固定的高亮定义(Statement在本例中)。颜色方案为这些定义提供颜色;可以在以下位置找到约定:help group-name(但并非每个语法定义都必须完全遵守它们)。

这对你意味着什么?您可以比较差异并(在 Vim 中)通过:hi link ...命令自定义映射,但这对于您使用的每种文件类型来说都是很多工作。它仍然取决于解析的工作方式。我猜你最终会决定选择一个编辑器。与此同时,我不会为这些差异而烦恼太多。

于 2012-11-30T19:55:58.400 回答
4

我不是用 Ruby 编写的,但我从 Emacs 处理这种情况的一般方法是:

  • 将点移动到您认为未正确绘制的单词,然后M-xcustomize-face这将使用点下的面部名称自动填充迷你缓冲区,一旦按下RET将打开一个自定义缓冲区,您可以在其中更改面部的渲染方式。看起来至少可以通过这种方式消除一些差异。

  • 主要编辑模式通常将面孔(通常来自字体锁定变体)与目标语言中的某个词汇组相关联。您需要调查哪些选项以及 Ruby 模式如何准确地将面分配给语言的语法元素。可能对人脸的全局调整过于极端(可能也会影响其他模式),因此如果您可以调整 Ruby 模式,仅将不同的语法组与不修改人脸的人脸相关联,这将是首选。

  • 您可以调查装饰水平。通常 Emacs 中的语言模式使用字体锁定模式来绘制文本,某些模式提供或多或少的颜色,具体取决于级别。更多信息在这里:http ://www.gnu.org/software/emacs/manual/html_node/elisp/Levels-of-Font-Lock.html

  • 也有可能 Ruby 模式最初不强调您想要强调的某些字符(数字符号和引号)。如果这不能通过调整语法元素与面孔的关联而不是通过装饰级别来实现,那么您可以尝试向字体锁定模式添加更多关键字,如下所述:http ://www.gnu.org/software/emacs /manual/html_node/emacs/Font-Lock.html

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

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

PS。还要注意 GUI 版本和终端版本可能有不同的配色方案。终端版本可能总体上使用较少的颜色,并且通常会争取更高的对比度,然后是 GUI。

于 2012-12-01T00:16:07.970 回答