viper-mode更改<delete>键</delete>

时间:2011-06-01 14:04:04

标签: emacs viper viper-mode

我想在viper-mode中使用<delete>键(C-d,我认为)进行前向删除。

在启动viper-mode之前,<delete>正常工作。在viper模式中,<delete>跳转到缓冲区的最后一行。

我已将(setq viper-ex-style-editing nil)添加到.viper,<backspace>适用于所有模式。

3 个答案:

答案 0 :(得分:2)

试试这个:

(define-key viper-vi-basic-map "\C-d" 'viper-delete-char)
(define-key viper-insert-basic-map "\C-d" 'viper-delete-char)

现在,它使用viper-delete-char命令与viper保持一致。如果您想要常规的emacs删除行为,请改用delete-char

viper是使用一堆不同的键映射实现的,并确定要修改哪些是棘手的。最简单的方法(通常)是查看源代码。所以你可以从 M-x find-library viper 开始。 注意:大多数键盘图实际上是在库viper-cmd中定义的。

答案 1 :(得分:1)

\键将切换回Emacs模式进行一次击键,因此您可以使用“\&lt; delete&gt;”进行搜索无需对.emacs文件进行任何更改或添加任何代码。

答案 2 :(得分:0)

好的,这就是你做的。

(1)在viper模式下,使用C-h k找出<delete>绑定的内容。以防万一你希望它附加到其他键。

(2)在其他一些模式中,使用C-h k找出功能的名称是什么,以实现您想要的功能。我认为这是delete-forward但是不相信我,请检查。 RMS有一种令人讨厌的重命名倾向。

(3)回到viper模式缓冲区,使用M-x local-set-key设置为你想要的。试试吧。

(4)如果您满意,请将此代码添加到.emacs

(defun fix-del-key-in-viper-mode ()
  (define-key viper-mode-map "<delete>" your-desired-function))
(add-hook viper-mode-hooks fix-del-key-in-viper-mode)

警告,你可能不得不对此进行一些捣乱,因为我还没有测试过。特别要确保它真的是viper-mode-map而不是其他东西,因为命名conventino并不是始终如一。