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


Answers:


402
(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
汤姆·布里托

8
@TomBrito哪个自动完成功能?在我的Emacs中,()set-face-attribute确实缺少,但是()和()中存在。如果您不想将其放入文件中,可能就是您想要的。M-xexecute-extended-commandM-:eval-expressionC-h fdescribe-functionM-:.emacs
罗里·奥肯 Rory O'Kane),

1
@ RoryO'Kane为什么有些命令无法通过 M-x?Noob问题,我敢肯定,但是我不熟悉emacs的底层工作原理
DavidS 2015年

6
@DavidS好问题。我在“ 为什么某些Emacs函数无法通过M-x ”中写了一个答案”。研究答案的确具有教育意义。
罗里·奥凯恩

但是,当您自定义了某些面孔(例如,使用不同的字体,斜度等)时,此解决方案将无法使用。这些面孔将保留旧的尺寸,并且需要单独设置它们。
Hi-Angel

371

Emacswiki中,GNU Emacs 23具有内置的组合键:

C-xC-+C-xC--增加或减少缓冲区文本的大小


29
或“ Cx C- =”和“ Cx C--”
HongboZhu 2012年

59
这对于该特定缓冲区是本地的。因此,当您切换到要编辑的其他文件时,它们将看不到此更改的效果。同样,当您关闭并重新打开缓冲区(甚至重新启动Emacs)时,它们将使用旧的默认大小。这可能就是您想要的;我只是说这是为了完整性。
ShreevatsaR 2012年

9
OP希望将配置保存在.emacs中,而事实并非如此。
xwl

在spacemacs工作UI(在MacOS上),设置在init.el - stackoverflow.com/a/296316/432903
prayagupd

80

按下Shift键和第一个鼠标键。您可以通过以下方式更改字体大小: 该网站有更多详细信息。


1
@AndrewLarned要使更改永久生效,请在.emacs文件中进行更改。(请参阅Chris Conway的答案以获取他的.emacs文件中的内容的示例。)
Ram Narasimhan 2012年

在执行此操作时,有什么方法可以控制它增加或减少多少字体?
Mauricio A. Cinelli

42

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

这是我的.emacs中的内容。实际上,颜色主题将设置基础知识,然后我的自定义面部设置将覆盖某些内容。自定义界面由emacs的custom-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设置字体。
EdwardGarson

3
FWIW,Emacs的维护者(大概的emacs的“先进”的用户)使用定制系统:github.com/jwiegley/dot-emacs/blob/...

38

这是另一个简单的解决方案。同样适用于24

(set-default-font "Monaco 14")

捷径:

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

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并查看制表符补全将为您提供一些想法。在我的系统,使用Emacs 23和启用抗锯齿,可以选择按名称,例如,系统字体MonospaceSans Serif等等。


10

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


如果重新启动emacs,更改将不会保留。
逢低

9

zoom.cfgglobal-zoom.cfg提供字体大小更改绑定(来自EmacsWiki)

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

8

这是一个用于交互式调整字体高度的选项,一次仅需一点:

;; 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-increase和的解决方案,text-scale-decrease因为装订线中的行号之后可能会被切断。


太棒了!非常感谢。
Fomentia '16

7

Firefox和其他程序允许您使用C- +和C--增大和减小字体大小。我设置了.emacs,以便通过添加以下代码行来具有相同的功能:

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

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

5

Aquamacs

(set-face-attribute 'default nil :font "Monaco-16" )

从Emacs Wiki 全局更改默认字体,它说您可以使用以下任一方法:

(set-face-attribute 'default nil :font FONT )

(set-frame-font FONT nil t)

哪里FONT是一样的东西"Monaco-16",如:

(set-face-attribute 'default nil :font "Monaco-16" )

Wiki上的第一个建议中有一个额外的右括号,这导致启动时出错。我终于注意到了多余的右括号,随后我更正了Wiki上的建议。然后,这两个建议对我都有效。


3

这完全取决于更改字体大小的含义。此EmacsWiki部分提供了最佳和最完整的信息。它区分了各种情况(文本缩放,框架字体,缓冲区/框架等):更改字体大小


1

在NTEmacs 23.1中,“选项”菜单具有“设置默认字体...”选项。


1

我对控制台emacs(emacs -nw)感到满意,现代vterm实现(例如gnome-terminal)往往具有更好的字体支持。另外,如果您习惯了这一点,则可以使用tmux,因此即使没有X,也可以在远程服务器上使用完整环境。


1

在AquaMacs中CMD +CMD -调整当前缓冲区的字体大小。


1

我使用hydra包通过按f2 + + + +/来连续控制字体的增/减f2 - - - -,这意味着按f2一次,然后使用+/ -仅控制,并通过恢复默认字体大小f2 0。因为我有键盘,所以我也将键盘绑定到字体设置。

(defhydra hydra-zoom (global-map "<f2>")
  "zoom"
  ("<kp-add>" text-scale-increase "in")
  ("+" text-scale-increase "in")
  ("-" text-scale-decrease "out")
  ("<kp-subtract>" text-scale-decrease "out")
  ("0" (text-scale-set 0) "reset")
  ("<kp-0>" (text-scale-set 0) "reset"))

以及以下按键绑定所支持的现代编辑器鼠标控件功能,请按Control +鼠标滚轮来增加/减少字体。

(global-set-key (kbd "<C-wheel-up>") 'text-scale-increase)
(global-set-key (kbd "<C-wheel-down>") 'text-scale-decrease)

鼠标滚轮的按键绑定不起作用,我有版本GNU Emacs 24.3.1 (x86_64-pc-linux-gnu, GTK+ Version 3.10.7)
Zelphir Kaltstahl 2015年

1
这些将(global-set-key (kbd "<C-mouse-4>") 'text-scale-increase) (global-set-key (kbd "<C-mouse-5>") 'text-scale-decrease) 在我的emacs版本(25)中
stefano

1

这是一个片段,使您可以使用交互式功能直接指定全局字体大小:

(defun set-font-size ()
    "Set the font size."
  (interactive)
  (set-face-attribute
   'default nil :height
   (string-to-number
    (read-string "Font size: " (number-to-string (face-attribute 'default :height nil))))))
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.