2011-09-25 104 views
20

我做了一个ctrlhb查看所有我在emacs中的绑定。现在我想解锁一个批号的键,只是因为我从来不使用Emacs的这些功能,而且当我不小心按下了绑定键时,我不想执行它们!这也为其他任务释放了很多密钥(例如与Cedet一起使用)。因此,除了全局密钥外,是否有任何方法可以批量删除绑定?有没有一种快速解锁Emacs中的键的方法?

 
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 

我想删除大多数绑定这对我来说是绝对没用的。

+0

如果您想为yank使用'Cv'的标准键盘绑定,'kill-region'等使用'Cx',请查看'cua-mode',这可以实现此目的,同时保留Emacs的功能。 – haxney

+2

请记住这些实际上是绑定的** ** **,尤其是使用emacs [Named-ASCII-Chars](http://www.gnu.org/software/emacs/manual/html_node/emacs/Named-ASCII -Chars.html#命名的ASCII字符数)。 **禁用'ESC'('“\ e”')将基于元键**禁用几乎所有的内容(至少在这里)。另外'C-c'和'C-x'是分支到许多命令的头等前缀。 –

回答

33

有取消设置许多键没有内置的方式,因为它很容易做到这一点吧:

(编辑严格的正确性:)

(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键,则可以将其与Emacs修改器(如super)相关联。例如,我有super-b绑定到browse-url-at-point
  • 如果你不是在一个普通的终端,换档键可用于区分键序列。例如,我有shift-meta-b绑定到bury-buffer
  • 对于有用但不足以保证专用密钥序列运行的命令,可以使用defalias来提供较短的名称。在我的.emacs文件中,我有(defalias 'ru 'rename-uniquely)(defalias 'c 'calendar)(等等)。
+0

是的,但我使用'家''结束'和箭头键等达到相同的效果。我很习惯这些,我发现很难适应其他一些导航键。另外我希望像这样的钥匙可用于我做更重要的任务。例如,我想撤消使用C-z,因为我发现使用默认的“C-x C-u”事物进行多重撤销非常困难。 – AnkurVj

+1

这适用于除C-z之外的所有密钥,尽管它应该是“暂停缓冲区”,但它以某种方式最小化emacs。有什么我在这里失踪? – AnkurVj

+0

嘿它一次工作,下一次停止工作..你能帮我调试吗?我复制粘贴完全相同的东西,现在我无法让它工作..它一直说“-Lisp错误:(错误类型参数整数或标记-P键)”! :(:( – AnkurVj

8

global-unset-keylocal-unset-key是有用的,但它是值得拥有的这个问题的答案是指出一般的方式来解除绑定键(任何键盘映射)是定义的nil绑定:

(define-key KEYMAP KEY nil) 

如果按照其中的任意一种其他功能的代码,你会发现,这是他们做什么。

+2

在emacs 24中,将默认密钥设置为零无效,并保留默认值。 – alinsoar

+0

“默认键”是什么意思? – phils

+0

emacs默认值附带的一个关键字,无需添加.emacs或更改init文件。例如,“M-)”默认为“移动过去关闭并重新加入”。 – alinsoar

相关问题