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

时间:2011-08-26 08:35:04

标签: emacs viper-mode vimpulse

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

按照此comment中的建议,我已设置

(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

编辑:在vimpulse-misc-keybindings.el中找到这段代码:

;; temporarily escape to vi state
(define-key viper-insert-basic-map "\C-o" 'viper-escape-to-vi)

那么应该定义吗?不知道为什么它不起作用。

1 个答案:

答案 0 :(得分:1)

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

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

插入状态中的

viper-escape-to-vi绑定到viper-toggle-key(但默认为C-z),请参阅下文。你的输出再次很奇怪。

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

对于前者(使用Pause键)

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

你应该尝试evil,成为vimpulse的继承者。它很顺利,摆脱了毒蛇。

在那里设置切换键(再次暂停)距离(evil-set-toggle-key "<pause>"),它是kbd序列而不是sexp。 C-o也很好。