增加/减少 emacs 框架中的字体大小(不仅仅是缓冲区)

Cal*_*laf 5 emacs

使用C-x C-+and C-x C--(text-scale-adjust) 非常方便地增加/减少一个缓冲区中的字体大小。当几个人在同一台显示器前一起工作时,这可以很好地减少头部碰撞。

有没有办法增加(然后减少)一(或所有帧同时)的字体大小?我想知道是否有比 1-C-x C-+在每个新缓冲区中重新键入、2- 调用 Mx x-select-font 并使用鼠标进行选择以及 3- 在暂存缓冲区中运行 elisp 代码更快的方法。

更新:

如果您不仅要满足上述 1-3 项,还要满足:

4- Keep the size (and position) of the frame still.
Run Code Online (Sandbox Code Playgroud)

然后看看这个问题。

Art*_*mão 6

根据 @Jordon Biondo 的回答,这是一种替代解决方案,通过使用set-frame-font参数 KEEP-SIZE equals to来解决更改框架大小的附带影响t

;; Resize the whole frame, and not only a window
;; Adapted from https://stackoverflow.com/a/24714383/5103881
(defun acg/zoom-frame (&optional amt frame)
  "Increaze FRAME font size by amount AMT. Defaults to selected
frame if FRAME is nil, and to 1 if AMT is nil."
  (interactive "p")
  (let* ((frame (or frame (selected-frame)))
         (font (face-attribute 'default :font frame))
         (size (font-get font :size))
         (amt (or amt 1))
         (new-size (+ size amt)))
    (set-frame-font (font-spec :size new-size) t `(,frame))
    (message "Frame's font new size: %d" new-size)))

(defun acg/zoom-frame-out (&optional amt frame)
  "Call `acg/zoom-frame' with negative argument."
  (interactive "p")
  (acg/zoom-frame (- (or amt 1)) frame))

(global-set-key (kbd "C-x C-=") 'acg/zoom-frame)
(global-set-key (kbd "C-x C--") 'acg/zoom-frame-out)
(global-set-key (kbd "<C-down-mouse-4>") 'acg/zoom-frame)
(global-set-key (kbd "<C-down-mouse-5>") 'acg/zoom-frame-out)
Run Code Online (Sandbox Code Playgroud)

  • 对我来说效果很好! (2认同)

Dre*_*rew 3

请参阅有关帧缩放的Emacs Wiki 页面。

它告诉您执行此操作的几种方法,包括来自库的命令zoom-frm.eldoremi-frm.elframe-cmds.el

特别是,单个命令zoom-in/out允许您放大或缩小帧或缓冲区。(前者:缩放一帧,就是你所要求的。)