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也可以。