ChatGPT解决这个技术问题 Extra ChatGPT

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

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

这是对我有用的最简单的答案stackoverflow.com/a/6050987/215094
新手,改用.emacs.d/init.el哪个更好(更干净更好的版本控制)

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

值是 1/10pt,所以 100 会给你 10pt,等等。


我正在尝试这样做,但在 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
@TomBrito 哪个自动完成?在我的 Emacs 中,M-x (execute-extended-command) 中确实缺少 set-face-attribute,但它存在于 M-: (eval-expression) 和 C-h f (describe-function) 中。 M-: 可能是您想要的,如果您不想将它放在您的 .emacs 文件中。
@RoryO'Kane 为什么某些命令无法通过 M-x 使用?菜鸟问题,我敢肯定,但我不熟悉 emacs 如何在低级别“工作”
@DavidS 好问题。我在“Why are some Emacs functions not available via M-x?”处写了一个答案。研究答案被证明是有教育意义的。
但是,当您自定义某些面孔时,此解决方案不起作用,例如具有不同的字体、倾斜等。它们将保留旧尺寸,您必须单独设置它们。
p
programking

Emacswiki 开始,GNU Emacs 23 有一个内置的组合键:

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


或“Cx C-=”和“Cx C--”
这是该特定缓冲区的本地。因此,当您切换到正在编辑的其他文件时,他们不会看到此更改的效果。此外,当您关闭并重新打开缓冲区(甚至重新启动 Emacs)时,它们将采用旧的默认大小。这可能是你想要的;我只是为了完整起见。
OP 想要将配置保存在 .emacs 中,但事实并非如此。
在 spacemacs UI(在 macos 中)中工作,在 init.el 中设置 - stackoverflow.com/a/296316/432903
在 elisp 中,这些键运行 face-remap.el 中的 text-scale-adjusttext-scale-increasetext-scale-mode 函数
G
George Stocker

按 Shift 和第一个鼠标按钮。您可以通过以下方式更改字体大小:This website 有更多细节。


@AndrewLarned 要使更改永久化,您将在 .emacs 文件中进行更改。 (有关他在 .emacs 文件中的示例,请参阅 Chris Conway 的回答。)
有没有办法控制这样做时增加或减少字体的程度?
v
viam0Zah

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

这是我的 .emacs 中的内容。实际上,颜色主题将设置基础,然后我的自定义面部设置将覆盖一些东西。 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")))))

许多高级 emacs 用户不喜欢使用自定义系统,因为它容易出错并且混合了所有自定义。最好将您的自定义分解为单独的 .el 文件并从 init.el 加载它们,然后将您的模式自定义作为 elisp 代码添加到每个文件中。请参阅上面 huaiyuan 的回答,了解如何通过 elisp 设置字体。
FWIW,emacs 维护者(大概是 emacs 的“高级”用户)使用自定义系统:github.com/jwiegley/dot-emacs/blob/…
r
ravi404

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

(set-default-font "Monaco 14")

捷径:

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

set-default-font 现在已弃用。使用 (set-frame-font "Monaco 14")(set-face-attribute 'default nil :height 130)
C
Chris Conway

我的 .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 等。


T
TheGreatPower

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


如果我重新启动 emacs,更改不会持续存在。
为了下次保留设置,请确保在设置字体后选择保存选项
d
david villa

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

C-- 或 C-mousewheel-up:增加字体大小。

C-+ 或 C-mousewheel-down:减小字体大小。

C-0 将字体大小恢复为默认值。


不幸的是,C-0 已经很好地使用了。并且链接断开了。但是好主意!
P
Paul Richter

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

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

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

K
Kevin Ushey

这是一个以交互方式调整字体高度的选项,一次一点:

;; 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)))))

当您想要调整 all 缓冲区中的文本大小时,这是更可取的。我不喜欢使用 text-scale-increasetext-scale-decrease 的解决方案,因为装订线中的行号可能会在之后被切断。


太棒了!太感谢了。
7
7stud

Aquamacs:

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

从 Emacs Wiki Globally Change the Default Font,它说您可以使用以下任何一种:

(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 上的建议。然后这两个建议都对我有用。


D
Drew

这完全取决于您更改字体大小的意思。这个 EmacsWiki 部分提供了最好和最完整的信息。它区分了各种情况(文本缩放、框架字体、缓冲区/框架等):Changing Font Size


M
Matthew H

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


P
Phil

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


b
blais

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


L
Leu_Grady

我使用 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"))

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

(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)
这些将是 (global-set-key (kbd "<C-mouse-4>") 'text-scale-increase) (global-set-key (kbd "<C-mouse-5>") 'text-scale-decrease) 在我的 emacs 版本中 (25)
I
Ibrahim

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

(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))))))