如何为缓冲区和模式行设置不同的字体大小?


14

我的init.el文件中包含以下行,以设置所有框架中字体的大小:

(push '(font . "DejaVu Sans Mono-10") default-frame-alist)

它可以工作,但我想在所有缓冲区中使用较大的字体,同时在模式行中保留较小的字体(这样它可以容纳更多信息并减少干扰)。想法是自动设置此设置,而不必为每个打开的缓冲区使用Cx C- +更改字体大小。

我正在使用从GNU / Linux系统上的主干编译的Emacs 25.0.50.1。

编辑:刚刚添加了一个答案,显示了如何完成。

Answers:


14

尝试用以下代码替换用于设置字体大小的代码:

(set-face-attribute 'default nil :font "DejaVu Sans Mono-14")
(set-face-attribute 'mode-line nil :font "DejaVu Sans Mono-10")

当然,您需要将大小(1410)更改为自己喜欢的值。


如果您想自定义特定面孔,但不知道名字,请尝试

M-x list-faces-display RET

这将为您提供所有面孔(带有预览)的列表,您可以搜索特定的关键字。


1
谢谢,就是这样。事实证明,列表面显示功能非常有用,因为可以修改5种与模式行相关的面。
撤销2014年

@undostres不客气:)
itsjeyd 2014年

有没有一种方法可以指定相对于默认主题的字体?使用text-scale-
crease

7

多亏了itsjeyd提供的答案,我设法写了一个简短的表达式来更改所有当前和将来帧的所有与模式行相关的面的大小。

如果您使用默认主题以外的其他主题(例如zenburn等),则应在声明主题之后放置代码;即,在此行之后:

(load-theme 'solarized-light t)

假设您的默认字体大小不是10,则代码为:

(let ((faces '(mode-line
               mode-line-buffer-id
               mode-line-emphasis
               mode-line-highlight
               mode-line-inactive)))
     (mapc
      (lambda (face) (set-face-attribute face nil :font "DejaVu Sans Mono-10"))
      faces))

对于较小的字体,请设置较小的值(“ DejaVu Sans Mono-9”)。可以使用其他字体:inconsolata等。

编辑:添加了显示结果的屏幕截图。模式行上的字体大小为10,其余(缓冲区等)为12。

较小的模式行字体

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.