【问题标题】:How to set the font size in Emacs?如何在 Emacs 中设置字体大小?
【发布时间】:2010-09-22 14:53:14
【问题描述】:

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

【问题讨论】:

标签: emacs fonts emacs-faces


【解决方案1】:

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

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

【讨论】:

  • 不幸的是,C-0 已经很好地使用了。并且链接断开了。但是好主意!
【解决方案2】:

这里有一个 sn-p,可让您使用交互功能直接指定全局字体大小:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      我使用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)
      • 在我的 emacs 版本中是 (global-set-key (kbd "&lt;C-mouse-4&gt;") 'text-scale-increase) (global-set-key (kbd "&lt;C-mouse-5&gt;") 'text-scale-decrease) (25)
      【解决方案5】:

      来自Emacswiki,GNU Emacs 23 有一个内置的组合键:

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

      【讨论】:

      • 或 `C-x C-=' 和 'C-x 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 函数
      【解决方案6】:

      这是另一个简单的解决方案。也适用于 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)
      【解决方案7】:

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

      ;; 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 的解决方案,因为装订线中的行号可能会在之后被截断。

      【讨论】:

      • 这太完美了!非常感谢。
      【解决方案8】:
      (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?”写了一个答案。研究答案被证明是有教育意义的。
      • 此解决方案在您自定义某些面孔时不起作用,例如拥有不同的字体、倾斜度等。它们将保留旧尺寸,您必须单独设置它们。
      【解决方案9】:

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

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

      【讨论】:

        【解决方案10】:

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

        【讨论】:

          【解决方案11】:

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

          【讨论】:

          • 如果我重新启动 emacs,更改不会保留。
          【解决方案12】:

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

          【讨论】:

            【解决方案13】:

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

            【讨论】:

              【解决方案14】:

              M-x 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 代码添加到每个文件中。看上面怀远的回答,看看如何通过elisp设置字体。
              • FWIW,emacs 维护者(大概是 emacs 的“高级”用户)使用自定义系统:github.com/jwiegley/dot-emacs/blob/…
              【解决方案15】:

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

              【讨论】:

                【解决方案16】:

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

                【讨论】:

                  【解决方案17】:

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

                  【讨论】:

                  • @AndrewLarned 要使更改永久生效,您需要在 .emacs 文件中进行更改。 (有关他在 .emacs 文件中的示例,请参阅 Chris Conway 的回答。)
                  • 有没有办法控制这样做时增加或减少多少字体?
                  猜你喜欢
                  • 2013-09-29
                  • 1970-01-01
                  • 2015-01-16
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2014-07-21
                  • 2012-05-22
                  相关资源
                  最近更新 更多