我想在viper-mode中使用<delete>
键(C-d,我认为)进行前向删除。
在启动viper-mode之前,<delete>
正常工作。在viper模式中,<delete>
跳转到缓冲区的最后一行。
我已将(setq viper-ex-style-editing nil)
添加到.viper,<backspace>
适用于所有模式。
答案 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并不是始终如一。