Spacemacs中如何绑定按键在行首进入evil-insert模式?(Emacs Evil Mode)
更简便的实现方式:用好Evil内置的命令/快捷键
嘿,刚好Evil本身就有现成的方案能满足你的需求,完全不用自己折腾复杂的命令组合!先给你说两个Evil默认就有的快捷键,直接就能实现你要的效果:
- 要是你想跳到当前行第一个非空白字符的位置进入插入模式:在Normal模式下直接按大写的
I就行,这个快捷键对应的内置命令是evil-insert-at-bol - 要是你要的是**绝对行首(包括行前面的空格、制表符)**进入插入模式:在Normal模式下按
0i就搞定(先按0跳到绝对行首,再按i进入插入模式)
如果你还是想把这个功能绑定到U键上,最优雅的方式就是直接用内置命令,而不是自己手动拼接步骤:
绑定到「绝对行首进入插入模式」
可以直接写个简洁的lambda,或者模拟按键序列:
;; 方式1:直接调用命令组合 (define-key evil-normal-state-map (kbd "U") (lambda () (interactive) (evil-beginning-of-line) (evil-insert))) ;; 方式2:模拟Normal模式下的按键操作,更简洁 (define-key evil-normal-state-map (kbd "U") (lambda () (interactive) (evil-execute-in-normal-state "0i")))
绑定到「第一个非空白字符处进入插入模式」
这个更简单,直接绑定Evil的内置命令就行:
(define-key evil-normal-state-map (kbd "U") 'evil-insert-at-bol)
这样的实现比你之前的写法更简洁,也更符合Evil的设计逻辑——毕竟这些常用操作Evil早就帮你封装好了,不用重复造轮子~
内容的提问来源于stack exchange,提问作者Quang Van




