spacemacs 中evil模式下怎么设置按 ’w‘ ’b‘ 的时候忽略 ’_‘

spacemacs 中evil模式下怎么设置按 ‘w’ ‘b’ 的时候忽略 ‘_’ ,比如 ‘hello_world hello_adward’ 光标在第一个hello_world处,我希望试用w光标能移动到空格处。

可以把下划线作为 word 的一部分:


(modify-syntax-entry ?_ "w")

如果想针对指定的 major mode 设置,可以参考 spacemacs 的文档

1 个赞

看起来是有点一时爽的想法,过一段时间可能又觉得这样不方便了。

另外就是你混淆了 ew 的含义:

;;         W
;;     |------------------\
;;     |   w              |
;;     |--------v         v
;;     aaaaaaaa_bbbbbbbb  cccccccc_dddddddd
;;     |-------^        ^ ^        ^------|
;;     |   e            | |           b   |
;;     |----------------/ \---------------|
;;         E                          B

(define-key evil-motion-state-map "e" #'evil-forward-word-end)
(define-key evil-motion-state-map "E" #'evil-forward-WORD-end)

(define-key evil-motion-state-map "w" #'evil-forward-word-begin)
(define-key evil-motion-state-map "W" #'evil-forward-WORD-begin)

(define-key evil-motion-state-map "b" #'evil-backward-word-begin)
(define-key evil-motion-state-map "B" #'evil-backward-WORD-begin)

上面的代码改一下就能解决你的问题。

2 个赞
2 个赞

这样确实可行~ 之前有读过这个FAQ,没把有些内容加进去,最近又有写c的需求了 :slightly_smiling_face:

感觉这个也是一种解决方案,确实用W就可以解决问题,但是vim确实会把 ‘_’ 当做word的一部分, 和使用W代替w感觉也还好,只不过不太习惯按住shit :dizzy_face:

谢谢各位大神。