如何在 emacs 中将一个键绑定到多个操作

如何在 emacs 中将一个键绑定到多个操作

我已经使用 emacs 多年了,但我对自定义 lisp 还比较陌生(除了插入其他 emacs 脚本/软件包安装说明中的行)。我以前编写过 Scheme,所以我有点熟悉,但那也是很久以前的事了。

如何将一个键映射到多个操作?我正在调整循环字体大小 lisp 代码形式: http://www.emacswiki.org/emacs/CycleFontSizes

除了我想在调整字体大小后最大化窗口(我使用的是 mac OSX)。

我可以使用 maxframe 最大化窗口:

(require 'maxframe)
(add-hook 'window-setup-hook 'maximize-frame t)

如何将其添加到字体大小键绑定中。我想做类似的事情:

(define-key global-map (read-kbd-macro "C-0")   
  (lambda()
    'font-zoom-reset-font-size
    (add-hook 'window-setup-hook 'maximize-frame t))
)

这不正确,因为 define-key 需要不同的类型。看过示例后,这可能很简单...

答案1

更新

您已经非常接近了——只需要通过包含一行将您的函数定义为交互式的(interactive),然后进行调用来font-zoom-reset-font-size实际调用该函数,而不仅仅是对该函数的引用:

(define-key global-map (read-kbd-macro "C-0")   
  (lambda()
    (interactive)
    (font-zoom-reset-font-size)
    (add-hook 'window-setup-hook 'maximize-frame t))
)

原始(并且仍然有效)答案

你可以定义一个包含多个步骤的函数,然后将键绑定到该函数。例如:

(defun zoom-font-and-max()
  (interactive)
  (font-zoom-reset-font-size)
  (add-hook 'window-setup-hook 'maximize-frame t))


(global-set-key (kbd "C-0") 'zoom-font-and-max)

相关内容