Viper模式命令前缀键通过两个间接设置。你已经找到了第一个,就像所有的命令键都绑定到'viper-command-argument
一样。接下来要做的是在变量viper-exec-array
中查找。它当前的设置如下:
(aset viper-exec-array ?c 'viper-exec-change)
(aset viper-exec-array ?C 'viper-exec-Change)
(aset viper-exec-array ?d 'viper-exec-delete)
(aset viper-exec-array ?D 'viper-exec-Delete)
(aset viper-exec-array ?y 'viper-exec-yank)
(aset viper-exec-array ?Y 'viper-exec-Yank)
(aset viper-exec-array ?r 'viper-exec-dummy)
(aset viper-exec-array ?! 'viper-exec-bang)
(aset viper-exec-array ?< 'viper-exec-shift)
(aset viper-exec-array ?> 'viper-exec-shift)
(aset viper-exec-array ?= 'viper-exec-equals)
因此,如果您想让键盘上的t键作为删除命令使用,您需要以下两个步骤:
(aset viper-exec-array ?t 'viper-exec-delete)
(define-key viper-vi-basic-map "t" 'viper-command-argument)
(假设您将运动从t重新绑定到某个地方,比如c键,可以使用以下命令:
(define-key viper-vi-basic-map "c" 'viper-goto-char-forward)
最后,您需要修改例程
'viper-prefix-arg-com
,我并不打算完全理解它。 话虽如此,如果您将所有的
?c
替换为
?t
,那么
t绑定将按预期工作。(或者,您可以像使用
?c
一样“添加”
?t
- 这也有效)。 我会提供源代码,但它有100行,不值得在此处包含(这是一个四个字符的更改)。 您可以通过执行
M-x find-function viper-prefix-arg-com来获取源代码。
长话短说,如果您想要对viper进行全面的重新绑定键,则需要大量的工作,并且您将更加熟悉viper源代码。
查看
'viper-prefix-arg-com
的编码方式,您无法在重新定义它的情况下进行所需的更改。 Viper-mode实现了可能有3或4种不同类型的vi命令(其中之一是“command-argument”)。 其他命令应该更容易重新绑定...
byte-code: Variable binding depth exceeds max-specpdl-size
- rsaarelm