3

我正在尝试在 Mac OS X 10.8.4 的 Emacs 24.3(来自http://emacsformacosx.com)中将 Ctrl + 减号(“C--”)映射到撤消,但我无法让它工作。似乎有一些非常全局的键绑定可以减小字体大小,我似乎无法覆盖。谁能告诉我我做错了什么?

我的 .emacs 中有以下内容。

(global-set-key (kbd "C--") 'undo)    ;; Doesn't work
(global-set-key (kbd "C-u") 'undo)    ;; Just for testing, does work

当我按 Ctrl+U 时,它会触发撤消,但当我按 Ctrl+减号时,它会减小字体大小。可能只是我应该使用“C--”以外的东西,但看起来它应该可以工作。我检查了键绑定(通过 Ch b),在那里,Cu 势必撤消,但 C-- 绑定到 text-scale-decrease。可能有可能找到该密钥的绑定位置并获得一些线索,但我的 Emacs-fu 太弱了。

我使用的是 Emacs 的图形版本,而不是终端版本。

4

1 回答 1

4

对于这些类型的问题,我通常会在遇到问题f1 k的组合键之后尝试, C--在你的情况下。应该发生以下两件事之一:

  1. 什么都没有发生 - 这意味着快捷方式正在操作系统级别被拦截。
  2. 它为您提供了正在调用的函数的描述。它很可能是由您的主要模式或次要模式之一设置的。因此,您也应该对此进行调查,搜索对该函数的引用,这就是text-scale-decrease您的情况。在找到global-set-key, 或local-set-keydefine-key 使用此函数后,请将其注释掉,或者最好使用相同的快捷方式调用相同的函数,并 nil~/.emacs.

UPD:如何取消设置密钥

当您发现您正在加载的某些源例如starter-kit正在设置密钥时,您只需要稍后以相同的方式取消设置它:

  1. 如果它是用 设置的(global-set-key (kbd "C--") 'text-scale-decrease),你用 取消它(global-set-key (kbd "C--") nil)
  2. 如果它是用 设置的(define-key markdown-mode-map (kbd "C--") 'text-scale-descrease),你用 取消它(define-key markdown-mode-map (kbd "C--") nil)
  3. 如果它被设置为

    (add-hook 'markdown-mode-hook (lambda()(local-set-key (kbd "C--") 'text-scale-descrease))

    你不安

    (add-hook 'markdown-mode-hook (lambda()(local-set-key (kbd "C--") nil))

于 2013-07-22T10:55:30.090 回答