2013-02-05 46 views
0

我想更改的行为Ctrl - d键。所以它会向后删除一个单词。我创建了一个功能:Emacs无法重置Ctrl-d键行为

(defun backward-delete-word (arg) 
     "Delete characters backward until encountering the beginning of a word. 
With argument ARG, do this that many times." 
     (interactive "p") 
     (delete-region (point) (progn (backward-word arg) (point)))) 

然后插入emacs.d此:

(global-set-key (kbd "\C-d") 'backward-delete-word) 

它的工作原理基本模式,但是在PHP-模式下,它只是删除了一个字符。当我点击

CTRL-Hķ按Ctrl-d

Emacs中给出了这样的:

C-d runs the command c-electric-delete-forward, which is an 
interactive compiled Lisp function in `cc-cmds.el'. 

It is bound to C-d. 

(c-electric-delete-forward ARG) 

不知何故,它被重置到另一个功能。如何找出它在哪里被重置,并使之与我的功能一起工作呢?

回答

2

我没有php-mode,所以我不能肯定地说,但结合很可能在php-mode-map重写(其中,作为主要模式的地图,具有更高的优先级高于全球地图)。

您可以通过使用C-H B列出所有可用键绑定,寻找C-dc-electric-delete-forward在输出缓冲器看到键盘映射表定义了绑定检查。

假设php-mode-map覆盖的C-d结合,则可以禁用它使用

(define-key php-mode-map (kbd "C-d") nil)