修改Emacs Evil模式按键映射时触发commandp类型错误求助
解决Evil模式可视模式按键映射的
commandp错误 你的问题根源在于:Emacs要求按键绑定的函数必须是命令(即通过(interactive)声明的可交互调用函数),而你写的lambda没有添加这个声明,所以触发了Wrong type argument: commandp错误。
修正方法很简单,在每个lambda里加上(interactive)即可,修改后的代码如下:
(evil-define-key 'visual 'global "<" (lambda () (interactive) (evil-shift-left) (evil-visual-restore)) ">" (lambda () (interactive) (evil-shift-right) (evil-visual-restore)))
(interactive)的作用是告诉Emacs这个函数可以作为命令被用户通过按键调用,这样就能通过commandp的检查,绑定后按下<或>就能正常执行缩进并恢复可视模式了。
另外提一句:默认情况下evil-shift-left/right在可视模式执行后应该会自动保留可视状态,如果你发现自己的配置里没有这个行为,可能是其他插件或配置影响了默认逻辑,保留evil-visual-restore是没问题的。
内容的提问来源于stack exchange,提问作者Shaobin Jiang
相关产品推荐
相关产品推荐

