有没有一种快速解锁Emacs中的键的方法?

时间:2011-09-25 23:13:00

标签: emacs

我做了 ctrl h b 来查看emacs中的所有绑定。现在我想取消绑定很多键,因为我从不使用Emacs的那些功能,当我意外按下绑定键时我不想执行它们!这也为其他任务释放了许多密钥(例如,与Cedet一起使用)。因此除了global-unset-key之外,还有什么方法可以批量删除绑定吗?

C-a     move-beginning-of-line
C-b     backward-char
C-c     mode-specific-command-prefix
C-d     delete-char
C-e     move-end-of-line
C-f     forward-char
C-g     keyboard-quit
C-h     help-command
C-k     kill-line
C-l     recenter-top-bottom
C-n     next-line
C-o     open-line
C-p     previous-line
C-q     quoted-insert
C-t     transpose-chars
C-u     universal-argument
C-v     scroll-up
C-x     Control-X-prefix
C-z     suspend-frame
ESC     ESC-prefix

我想删除大部分对我来说毫无用处的绑定。

2 个答案:

答案 0 :(得分:37)

没有内置的方法来取消设置很多键,因为它很容易自己做:

(编辑严格正确:)

(dolist (key '("\C-a" "\C-b" "\C-c" "\C-d" "\C-e" "\C-f" "\C-g"
               "\C-h" "\C-k" "\C-l" "\C-n" "\C-o" "\C-p" "\C-q"
               "\C-t" "\C-u" "\C-v" "\C-x" "\C-z" "\e"))
  (global-unset-key key))

虽然我不得不说大多数你称之为“无用”的命令我称之为“必不可少”。

(已编辑添加:)

至于释放其他任务的密钥,还有很多未使用的密钥空间:

  • 按照惯例为用户保留由C-c后跟字母组成的密钥序列。
  • 如果您有额外的修改器,例如Mac上的Option或PC上的Windows键,则可以将其与super之类的Emacs修改器相关联。例如,我super-b绑定了browse-url-at-point
  • 如果您不在普通终端上,则可使用shift键区分键序列。例如,我shift-meta-b绑定了bury-buffer
  • 对于有用但运行频率不足以保证专用键序列的命令,您可以使用defalias提供更短的名称。在我的.emacs文件中,我有(defalias 'ru 'rename-uniquely)(defalias 'c 'calendar)(以及其他许多内容)。

答案 1 :(得分:10)

global-unset-keylocal-unset-key很有用,但值得回答这个问题,指出一般取消绑定密钥的方法(对于任何 keymap)用于定义nil

的绑定
(define-key KEYMAP KEY nil)

如果您按照其他任何一项功能的代码进行操作,您会发现这正是他们所做的。