重新绑定Emacs中的"C-d"快捷键以删除单词

3

我已经尝试了几种不同的方法,但都没有成功。我想在处理C++文件时切换M-d和C-d功能(删除单词,删除字符)。

请问有人能帮助我吗?


尽管这个问题已经得到了正确的回答,我想评论一下,您可能考虑保留键绑定方式。切换它们没有客观优势,如果您训练肌肉记忆——这并不需要很长时间!——您将在Emacs中获得一致的行为,而不受主模式的影响。 - Thomas
2个回答

2
(add-hook 'c-initialization-hook
          (lambda ()
            (define-key c++-mode-map "\C-d" 'kill-word)
            (define-key c++-mode-map "\M-d" 'c-electric-delete-forward)))

来自CC Hooks - CC Mode Manulal:

变量:c-initialization-hook

仅在Emacs会话期间运行一次的钩子,当CC Mode被初始化时会运行。这是一个很好的地方,在任何CC Mode键映射中更改按键绑定(或添加新的按键绑定)。请参见示例.emacs文件


2
这段代码可以完成任务,但存在两个问题。首先,每次打开一个新的C++缓冲区时都要运行相同的代码。这种代码最好在一般情况下只运行一次,以适用于C++模式。其次,它没有使用kbd,因此可读性较差/容易出错。 - Nicolas Dudebout
1
@NicolasDudebout 谢谢您的评论。我已经更新了我的帖子,使用 c-initialization-hook 代替 c++-mode-hook,后者只在每个 Emacs 会话中执行一次。 - dkim

1
(eval-after-load "cc-mode"
  '(progn
     (define-key c++-mode-map (kbd "C-d") 'kill-word)
     (define-key c++-mode-map (kbd "M-d") 'delete-char)))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接