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

Ank*_*rVj 26 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

我想删除大部分对我来说绝对没用的绑定.

Sea*_*ean 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))
Run Code Online (Sandbox Code Playgroud)

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

(已编辑添加:)

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

  • C-c按照惯例为用户保留由后跟字母组成的键序列.
  • 如果你有一个额外的修饰符,比如Mac上的Option或PC上的Windows键,你可以将它与Emacs修饰符相关联super.例如,我必须super-b这样browse-url-at-point做.
  • 如果您不在普通终端上,则可以使用shift键来区分键序列.例如,我必须这样shift-meta-bbury-buffer.
  • 对于有用但运行频率不足以保证专用键序列的命令,您可以使用defalias提供更短的名称.在我的.emacs文件,我有(defalias 'ru 'rename-uniquely)(defalias 'c 'calendar)(在许多其他).

  • 我不仅没有解开它们,而是习惯了Ca和Ce.你最终可以节省很多时间,而不是将你的手从主排上移开. (7认同)
  • 这就是我逐渐将所有其他编辑器折叠成emacs的原因.甚至我的浏览器现在也是"conkeror",它基本上是在浏览器中重新实现(很少一部分)emacs. (2认同)

phi*_*ils 11

global-unset-key并且local-unset-key是有用的,但值得回答这个问题,指出取消绑定键(对于任何键映射)的一般方法是定义绑定:nil

(define-key KEYMAP KEY nil)
Run Code Online (Sandbox Code Playgroud)

如果你按照其他任何一个函数的代码,你会发现这正是他们所做的.

  • 在emacs 24中,将默认密钥设置为nil无效,并保留默认密钥. (2认同)