在Vimpulse中使用Ctrl-o调用单个正常模式命令



vim中的通常行为是C-o处于插入模式,允许用户使用一个正常模式命令,然后返回到插入模式。

按照这个评论中的建议,我设置了

(vimpulse-imap "C-o" 'viper-escape-to-vi)

但是当我在插入模式下按C-o时,字符"^O"被插入缓冲区中,并且我无法像我期望的那样切换到一个命令的正常模式。我理解viper-escape-to-vi默认绑定到C-z,但我也无法使用此键组合切换到正常模式("^Z"打印在缓冲区中)。我做错了什么?

另外,第二个问题:我希望C-z不受viper-mode(或vimpulse)的约束,因为我将它用于elscreen。我怎么能告诉它离开C-z单独?

Edit:在vimpulse-misc-keybindings.el:

中找到这段代码
;; temporarily escape to vi state
(define-key viper-insert-basic-map "C-o" 'viper-escape-to-vi)

应该已经定义了吗?不知道为什么不行

Ad 1)它对我有用,也许你的配置出了问题?

但是输出很奇怪:唯一获得它的方法是加引号插入(或类似的)。

viper-escape-to-vi在插入状态下绑定到viper-toggle-key(但默认是C-z),见下文。你的输出又是奇怪的。

Ad 2)在 viper加载之前,您必须将viper-toggle-key设置为sexp ,或者自定义它。

对于前者(使用Pause键)

(setq viper-toggle-key [pause])
(require 'viper)

作为冲动的继承者,你应该尝试邪恶。它进展得很顺利,还除掉了蝰蛇。

设置切换键(再次暂停)是一个(evil-set-toggle-key "<pause>")的距离,它是一个kbd序列,而不是一个sexp。C-o也可以。

最新更新