我如何调整这个elisp函数来区分C-d和amp; DEL?

时间:2010-05-20 14:22:23

标签: emacs keyboard-shortcuts elisp

这是我目前的功能(盲目地从网站上复制粘贴)

(defun tweakemacs-delete-one-line ()
  "Delete current line."
  (interactive)
  (beginning-of-line)
  (kill-line)
  (kill-line))
(global-set-key (kbd "C-d") 'tweakemacs-delete-one-line)

我想摆脱这里有两个怪癖。 1)这实际上将DEL重新绑定到相同的函数。我希望我的DEL保持“删除一个字符”。 2)如果该行只是换行符,则需要有一个不会双重杀死的情况。

2 个答案:

答案 0 :(得分:5)

要区分这两者,请使用键的首选矢量语法:

(global-set-key [delete] 'foo)
(global-set-key [(control d)] 'bar)

至于第二件事,听起来好像要么

(setq kill-whole-line t)

或者只想使用函数kill-entire-line

答案 1 :(得分:1)

我看了part of the manual on keybindings,并且说C-d<DEL>与其他特殊键一样受约束。要取消绑定它们,您必须明确设置它们。

最终,我使用了这个解决方案:

(global-set-key (kbd "<delete>") 'delete-char)
(global-set-key ([control d]) 'kill-whole-word)