emacs全局放大/缩小

met*_*mit 19 emacs font-size zooming

我知道我可以使用Cx C- +进行放大/缩小,但这仅适用于当前文件.一旦我打开另一个文本,文本就会回到默认值,并且一遍又一遍地执行它真的很烦人.如何为当前的emacs会话保持全局缩放级别?

我知道如果你知道确切的字体大小,我可以在init文件中设置它,我不知道.另外,我不想让它保持永久性 - 我通常需要这个,当我没有外部屏幕几个小时或连接到投影仪同时进行演示时.

jua*_*eon 9

这段代码修改了放大/缩小功能,以将命令应用于每个缓冲区.这应该达到你想要做的.

(defadvice text-scale-increase (around all-buffers (arg) activate)
  (dolist (buffer (buffer-list))
    (with-current-buffer buffer
      ad-do-it)))
Run Code Online (Sandbox Code Playgroud)

  • 太好了!虽然,页面上的第一个方法适用于您访问的新文件,但您的浏览器仅适用于所有打开的缓冲区(现在才注意到).也许是因为他们还设置了`text-scale-mode-amount`或者其他东西 - 我真的不知道elisp. (2认同)

Dre*_*rew 7

EmacsWiki页面上提供了此处提供的所有答案以及更多内容,专门讨论设置和更改字体大小的问题,包括逐步更改字体大小.

@ abo-abo的答案是正确的,无论你是否认为他在示例代码中使用的大小太大,无论解决方案是否不解决增量调整问题.

@juanleon的答案基本上使文本缩放模拟更改默认字符大小(@ abo-abo的答案).

文字缩放是缩放缓冲器文本(一个缓冲器,无论在那里示出),而不是文本(在帧中所示的所有缓冲器).但是,如果您希望所有缓冲区的文本大小在给定的框架中更改,那么在这种情况下没有理由为文本缩放而烦恼:只需更改字体大小即可.

您可以执行其中一个或两个(在任何地方缩放缓冲区文本或缩放框架),并使用相同的命令逐步执行此操作(如果使用zoom-in/out库中的 命令)zoom-frm.el.

另一方面,如果你真的想逐步改变所有帧所有缓冲区的文本大小,那么最好的方法是(1)@ juanleon的建议或(2)逐步缩放标准面 default.

对于后者,你可以使用命令zoom-all-frames-inzoom-all-frames-outzoom-frm.el


abo*_*abo 6

只需将其粘贴*scratch*并评估(使用C-jC-x C-e):

(set-face-attribute 'default nil :height 150)
Run Code Online (Sandbox Code Playgroud)

将它放在init文件中并在以后将它注释掉时,没有任何问题,当你不需要它时.

  • 嗯,这只是让我的窗口变得如此之大,以至于超出了屏幕 - 这正是为什么我想避免猜测我所连接的某些奇怪屏幕的确切字体大小,并且我不知道其分辨率。我喜欢使用 Cx C-+ 获得的迭代放大选项,我只想在整个会话中保留该值。例如,这与我在网络浏览器中的行为相同。 (2认同)

mga*_*lgs 5

使用处理此确切问题的小模式可以缩放所有文本(包括状态行和行号):purcell / default-text-scale。它在Melpa可用。

这将缩放所有文本,以避免文本比例不匹配,例如填充列指示器的行号不正确地偏移。

此处的其他答案可能不适用于新缓冲区,或者需要过多的手动干预。