使用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)
然后看看这个问题。
根据 @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)
请参阅有关帧缩放的Emacs Wiki 页面。
它告诉您执行此操作的几种方法,包括来自库的命令zoom-frm.el、doremi-frm.el和frame-cmds.el。
特别是,单个命令zoom-in/out允许您放大或缩小帧或缓冲区。(前者:缩放一帧,就是你所要求的。)