我如何调整这个elisp函数来区分Cd和DEL?

Fle*_*ore 2 emacs elisp keyboard-shortcuts

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

(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)
Run Code Online (Sandbox Code Playgroud)

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

Kil*_*oth 5

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

(global-set-key [delete] 'foo)
(global-set-key [(control d)] 'bar)
Run Code Online (Sandbox Code Playgroud)

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

(setq kill-whole-line t)
Run Code Online (Sandbox Code Playgroud)

或者只是想使用该功能kill-entire-line.