You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

修改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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 17:54:52