【问题标题】:Emacs font sizing with Ctrl key and mouse scroll使用 Ctrl 键和鼠标滚动调整 Emacs 字体大小
【发布时间】:2011-01-06 16:56:41
【问题描述】:

notepad++ 允许我在按住 Ctrl 键并将鼠标中间滚动按钮向前旋转时增加字体大小。

同样,当我按住Ctrl并向后旋转鼠标中滚动按钮时,喜欢的尺寸会减小。

如何使用 Emacs 获得相同的效果?

【问题讨论】:

  • 你的答案在下面,但你真的经常这样做吗?
  • 是的,当我向我的团队解释代码时,我经常会最大化字体。甚至在演示时在投影仪中也很有用
  • 这是emacs老兄,你为什么要用鼠标? C-x C-+ 就是这样!
  • Xah Lee 有最好的答案,独立于操作系统。用C-h k C-<scroll-up> 描述密钥。所以,对于 Windows,我得到(kbd "<C-wheel-up>")。来自ergoemacs.org/emacs/emacs_mouse_wheel_config.html

标签: emacs mouseevent font-size


【解决方案1】:

使用 emacs23,您可以在 .emacs.el 中添加以下行:

(global-set-key (kbd "<C-mouse-4>") 'text-scale-decrease)
(global-set-key (kbd "<C-mouse-5>") 'text-scale-increase)

【讨论】:

  • 我在 windows 上使用 emacs 23.1.5。但我无法让它工作
  • +1 不确定mouse-4 和mouse-5 是什么,但这对我来说非常有效,非常感谢! (global-set-key (kbd "") 'text-scale-decrease) (global-set-key (kbd "") 'text-scale-increase)
  • 在干净的 ubuntu 安装中,C-mouse-4 和 C-mouse-5 与快速滚动相关联,所以我使用的是 M-mouse-4 和 M-mouse-5(但是s- 前缀也可用)。
  • @mariotomo 如果自定义 mouse-wheel-scroll-amount 变量,可以更改绑定快速滚动的键,然后使用这些键进行缩放。
  • 唉,这对 any 文本不起作用。 IE。我在 .emacs 配置中有一行 ...'(font-lock-comment-face ((t (:foreground "dim gray" :slant italic :weight bold :height 71 :family "purisa")))。这是为 cmets 设置字体/大小,并且该字体由于某种原因对 text-scale-decrease 函数没有反应。
【解决方案2】:

AlexCombas' answer的代码:

(defun font-big () (交互的) (set-face-attribute 'default nil :height (+ (face-attribute 'default :height) 10))) (defun font-small () (交互的) (set-face-attribute 'default nil :height (- (face-attribute 'default :height) 10))) (global-set-key (kbd "") 'font-small) (global-set-key (kbd "") 'font-big)

编辑:最少和最多使用

(defun font-big () (交互的) (set-face-attribute 'default nil :height (最小 720 (+ (face-attribute 'default :height) 10)))) (defun font-small () (交互的) (set-face-attribute 'default nil :height (最多 80 (- (face-attribute 'default :height) 10))))

【讨论】:

  • 这行得通。无论如何我可以将字体大小限制为最大 72 和最小 8?
  • &lt;C-wheel-down&gt;&lt;C-wheel-up&gt; 对我不起作用。我使用了&lt;C-mouse-5&gt;&lt;C-mouse-4&gt;,效果很好。 (如果重要的话,我在 ArchLinux 上)
  • 我使用了示例代码,并在函数 font-bigfont-small 的最后一个右括号之前添加了以下内容,以便消息行告诉命令时新高度是多少被执行:(message "Default face height set to %d" (face-attribute 'default :height))
【解决方案3】:

试试这个:

(global-set-key (kbd "<C-mouse-4>") (lambda () (interactive) (text-scale-decrease 1)))
(global-set-key (kbd "<C-mouse-5>") (lambda () (interactive) (text-scale-increase 1)))

【讨论】:

    【解决方案4】:

    理论上我可以给你答案,但是比我更熟练的人将不得不编写 lisp 我只是有点忙 atm 来为自己弄清楚。

    如果明天之前没有人回复,我会翻书并弄清楚。

    需要做什么: 写一个函数(font-big)来做这个:

    1. font-default-size = font-default-size+1`

    2. 然后重新评估所有打开的缓冲区。

    然后将函数绑定到一个键(define-key map [C-wheel-up] 'font-big)

    然后对 (font-small) 执行相同的操作。

    我希望我的想法至少得到部分功劳:)

    【讨论】:

    • 感谢您的想法 :-)。找 lisp 高手写一个函数
    【解决方案5】:

    Zoom Frame 是你想要的。我一直在做你描述的事情。加载 zoom-frm.el 后,添加一些绑定,例如:

    (global-set-key [S-mouse-1] '放大) (global-set-key [C-S-mouse-1] '缩小) (global-set-key (vector (list 'control mouse-wheel-down-event)) '放大) (global-set-key (vector (list 'control mouse-wheel-up-event)) '缩小)

    另见:http://www.emacswiki.org/emacs/SetFonts#ChangingFontSize

    【讨论】:

    • 你摇滚。我会玩这些设置。我用其他人的建议做了 zoom。这个 emacs 自带的可以减少我的 emacs 配置。
    • 这可能行得通,但正如您所说,使用这些命令需要将zoom-frm.el 添加到.emacs.d/lisp/,这需要添加frame-cmds.el,这需要添加更多文件,所有这些都很大。我不愿意将所有这些东西添加到我的 Emacs 设置中,只是为了获得简单的字体缩放功能。 @cobbal 的答案不需要任何额外的东西就可以解决问题。
    • @TeemuLeisti:不需要。只需要三个文件:(1) zoom-frm.el、(2) frame-cmds.el 和 (3) frame-fns.el。这些文件是分开的,因为有人可以在没有#1 或#2 的情况下使用#3,或者在没有#1 的情况下使用#2。如果这仅作为缩放“包”提供,那么您可以做的就是:始终加载所有三个。哦,并且 none 是“huge”:所有 3 个加起来大约 100KB,没有 cmets。无论如何,请不要觉得有义务使用它们中的任何一个。
    • 只是如果只想让这个简单的缩放功能与鼠标一起使用,cobbal 的答案就可以了。无论如何,我收回了“巨大”,并没有冒犯的意思。这些文件似乎实现了很多有用的功能。
    猜你喜欢
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-07
    相关资源
    最近更新 更多