所有模式下的Viper模式

kon*_*onr 7 emacs vimpulse viper viper-mode

我正在从vi移动到emacs,并且使用viper和vimpulse,当我C-w C-w进入窗口并且无法使用相同的命令返回原始窗口时它会变得非常烦人,因为另一个缓冲区(可能是帮助缓冲区)不是在Viper模式下.我怎样才能解决这个问题?

我尝试将其他模式添加到viper配置中,并使用默认情况下使用挂钩启动viper模式:

(add-to-list viper-vi-state-mode-list 'help-mode)
(add-hook 'help-mode (lambda () (setq viper-mode t)))

但这些命令都没有奏效.实际上,第一个产生了以下错误:

Warning (initialization): An error occurred while loading `/home/konrad/.emacs.d/init.el':

Wrong type argument: symbolp, (fundamental-mode ...

除此之外C-w C-w,我也错过了无法使用hjkl进行导航.有没有办法重用viper设置的键绑定,而不是为每种模式重新绑定它们?

Phi*_*hil 4

将挂钩添加到帮助模式的语法如下所示:

(add-hook 'help-mode-hook (lambda () (viper-mode t)))
Run Code Online (Sandbox Code Playgroud)

请注意,钩子变量以“-hook”命名,并且 setq 在这里不起作用,因为它viper-mode是命令,而不是变量。

您也许可以通过以下方式获得激活 viper 的所有模式:

(add-hook 'fundamental-mode-hook (lambda () (viper-mode t)))
Run Code Online (Sandbox Code Playgroud)

因为所有模式都继承自基本模式。