如何在Emacs中设置字体大小?

387

我还希望将字体大小保存在我的.emacs文件中。


1
请参考以下链接:https://dev59.com/2HI95IYBdhLWcg3w7CjL - Michael Paulukonis
3
这是对我有用的最简单的答案 https://dev59.com/tm025IYBdhLWcg3wZlLe#6050987 - Zeynel
4
新手应该使用.emacs.d/init.el,它更好(更干净、更易于版本控制)。 - XY Li
1
请参见 https://emacs.stackexchange.com/a/10439/5165 - imz -- Ivan Zakharyaschev
17个回答

461
(set-face-attribute 'default nil :height 100)

数值以1/10pt为单位,因此100表示10pt等等。


2
我正在尝试做这个,但在Emacs 23.1.1中,自动完成仅会显示以下选项:“set-face-background set-face-font set-face-inverse-video-p set-face-underline set-face-background-pixmap set-face-foreground set-face-stipple set-face-underline-p”。 - The Student
9
哪一个自动完成?在我的Emacs中,set-face-attribute确实不在M-xexecute-extended-command)中,但它出现在M-:eval-expression)和C-h fdescribe-function)中。如果你不想将这个命令放到你的.emacs文件中,那么M-:可能是你想要的。 - Rory O'Kane
1
@RoryO'Kane 为何有些命令无法通过 M-x 运行?我知道这是一个新手问题,但我不太了解 Emacs 在低级别上是如何运作的。 - DavidS
6
@DavidS 很好的问题。我在“为什么有些Emacs函数无法通过M-x使用?”中写了一个答案。研究这个问题对我来说非常有教育意义。 - Rory O'Kane
2
这个解决方案在你自定义了一些字体时就不起作用了,例如使用不同的字体、倾斜等。它们会保留旧的大小,你需要逐个设置它们。 - Hi-Angel
至少在我的init.el文件中,GNU Emacs 25.2.2中的Confirmed无法工作。我喜欢在Emacs上进行美妙的编程之夜,然后花费1个小时以上来尝试如何减小字体大小。 - Matthaeus Gaius Caesar

414

来自Emacswiki,GNU Emacs 23内置按键组合:

C-xC-+C-xC-- 可以增加或减小缓冲区文本大小


34
“C-x C-=” 和 “C-x C--” 分别代表 Emacs 缓冲区中的增加和减少字体大小的快捷键。 - HongboZhu
76
这个设置只针对当前的编辑缓冲区,所以当你切换到其他文件进行编辑时,它们将看不到此更改的效果。并且,当你关闭并重新打开该缓冲区(甚至重新启动Emacs)时,字体大小还会恢复为旧的默认值。这可能是你想要的,我只是为了完整性而陈述这些。 - ShreevatsaR
13
楼主想要将配置保存在 .emacs 文件中,但这个操作没有成功。 - xwl
适用于Spacemacs UI(在macOS上),以在init.el中进行设置-https://dev59.com/5HVC5IYBdhLWcg3wcgmd#296316 - prayagupa
1
在elisp中,这些键运行face-remap.el中的text-scale-adjusttext-scale-increasetext-scale-mode函数。 - Dave X
如果您想让C-x C-+所有缓冲区中增加字体大小,请查看帖子。 - kotchwane

81

按下Shift键和鼠标左键。你可以通过以下方式改变字体大小:此网站有更详细的信息。


2
@AndrewLarned 要使更改永久生效,您需要在您的 .emacs 文件中进行更改。(请参见 Chris Conway 的答案,了解他在 .emacs 文件中的示例。) - Ram Narasimhan
有没有办法控制在这样做时字体增加或减小的程度? - Mauricio A. Cinelli

44

M-x customize-face RET default允许您设置default面,其他所有面都基于该面。在那里,您可以设置字体大小。

以下是我的.emacs文件中的内容。实际上,color-theme将设置基础样式,然后我的自定义面板设置将覆盖一些内容。custom-set-faces是由emacs的customize-face机制编写的:

;; my colour theme is whateveryouwant :)
(require 'color-theme)
(color-theme-initialize)
(color-theme-whateveryouwant)

(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 (:stipple nil :background "white" :foreground "black" :inverse-video nil :box nil :strike-through nil :overline nil :underline nil :slant normal :weight normal :height 98 :width normal :foundry "unknown" :family "DejaVu Sans Mono"))))
 '(font-lock-comment-face ((t (:foreground "darkorange4"))))
 '(font-lock-function-name-face ((t (:foreground "navy"))))
 '(font-lock-keyword-face ((t (:foreground "red4"))))
 '(font-lock-type-face ((t (:foreground "black"))))
 '(linum ((t (:inherit shadow :background "gray95"))))
 '(mode-line ((t (nil nil nil nil :background "grey90" (:line-width -1 :color nil :style released-button) "black" :box nil :width condensed :foundry "unknown" :family "DejaVu Sans Mono")))))

2
许多高级的emacs用户更喜欢不使用自定义系统,因为它容易出错并混合所有自定义内容。最好将您的自定义分解成单独的.el文件,并从init.el加载它们,并在每个文件中添加elisp代码作为模式自定义。请参见上面huaiyuan的答案,了解如何通过elisp设置字体。 - EdwardG
3
值得一提的是,emacs的维护者(可能是个"高级"用户)也使用了customize系统:https://github.com/jwiegley/dot-emacs/blob/bb93466aab71b1140da31f3e6e16e8d0615b2c21/settings.el#L1227-L1252 - Ben

41

这是另一个简单的解决方案。在24小时内同样有效。

(set-default-font "Monaco 14")

快捷方式:

`C-+` increases font size
`C--` Decreases font size

2
set-default-font is now deprecated. Use either (set-frame-font "Monaco 14") or (set-face-attribute 'default nil :height 130) - kotchwane
@kotchwane 谢谢你的警告。你知道 set-frame-font:height 中的大小之间有什么关系吗?在我的 Emacs 中,将后者设置为 93、94 或 95 具有完全相同的效果。 - pglpm

16

在X11中打开emacs,转到选项菜单,选择“设置默认字体...”,更改字体大小。 在同一菜单中选择“保存选项”。完成。


4
重新启动emacs后,更改不会保留。 - dips
为了保留设置以供下次使用,请确保在设置字体后选择“保存选项”。 - G Eitan

15

我在我的.emacs文件中有以下内容:

(defun fontify-frame (frame)
  (set-frame-parameter frame 'font "Monospace-11"))

;; Fontify current frame
(fontify-frame nil)
;; Fontify any future frames
(push 'fontify-frame after-make-frame-functions) 

你可以用任何你选择的字体替换"Monospace-11"。可用选项集高度依赖于系统。使用 M-x set-default-font 并查看 tab 键自动完成将给您一些想法。在我的系统上,使用 Emacs 23 和抗锯齿功能启用,可以按名称选择系统字体,例如MonospaceSans Serif等。


11

zoom.cfgglobal-zoom.cfg提供了改变字体大小的快捷键绑定(来自EmacsWiki)

  • C-- 或 C-mousewheel-up: 增加字体大小。
  • C-+ 或 C-mousewheel-down: 减小字体大小。
  • C-0 将字体大小还原为默认值。

“C-0”已经被广泛使用了,但链接已经失效。不过这是个好主意! - Michel de Ruiter

10

这里有一个交互式的选项,可以逐个点地调整字体高度:

;; font sizes
(global-set-key (kbd "s-=")
                (lambda ()
                  (interactive)
                  (let ((old-face-attribute (face-attribute 'default :height)))
                    (set-face-attribute 'default nil :height (+ old-face-attribute 10)))))

(global-set-key (kbd "s--")
                (lambda ()
                  (interactive)
                  (let ((old-face-attribute (face-attribute 'default :height)))
                    (set-face-attribute 'default nil :height (- old-face-attribute 10)))))

当您希望调整 所有 缓冲区中的文本大小时,这是更可取的。我不喜欢使用 text-scale-increasetext-scale-decrease 的解决方案,因为接下来可能会出现在装订线处截断。


这太完美了!非常感谢你。 - Fomentia

9

Firefox和其他程序允许你使用C-+和C--来增加和减小字体大小。我设置了我的.emacs文件,通过添加以下代码,使我也能够拥有这种功能:

(global-set-key [C-kp-add] 'text-scale-increase)

(global-set-key [C-kp-subtract] 'text-scale-decrease)

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