我在折行后也使用了 j
,k
来移动光标:
(define-key evil-normal-state-map (kbd "j") 'evil-next-visual-line)
(define-key evil-normal-state-map (kbd "k") 'evil-previous-visual-line)
我同时也开启了相对行号
(global-linum-mode t)
(linum-relative-global-mode t)
因此我就遇到了一个问题,如图:
当我的光标处于行号指示的第2行时,我想按 k
调到行号指示的第1行。可实际上我跳的是和第2行相邻的上一行。
所以我想请教一下:
怎样在折行情况下,让相对行号和jk的移动相匹配,同时折行后能方便地上下移动光标?
另外我这样设置, gk
和 gj
却没有成功,似乎被占用了:
(define-key evil-normal-state-map (kbd "gj") 'evil-next-visual-line)
(define-key evil-normal-state-map (kbd "gk") 'evil-previous-visual-line)
你需要的是 evil-previous-line
, 这个默认绑定的是方向键上。
不行啊!
你说的是这样吗:
;; j and k to behave like g j and g k
(define-key evil-normal-state-map (kbd "gj") 'evil-next-line)
(define-key evil-normal-state-map (kbd "gk") 'evil-previous-line)
而且我看evil-previous-line
默认的绑定就是 k
。
我现在这样做:
(define-key evil-normal-state-map (kbd ",j") 'evil-next-line)
(define-key evil-normal-state-map (kbd ",k") 'evil-previous-line)
可以在折行情况下使用,j
向下移动光标、,k
向上移动光标,这样没有破坏jk
和相对行号的联系。
说明:
- 之所以不用
gk
, gj
是因为我发现在org-mode下,这两个快捷键被覆盖了,对应的功能是向同级的Heading上下移动。
- 在vim中,针对折行,可以使用
gk
, gj
, gh
, gl
, g$
等等只对 当前visual-line
的光标移动操作,不知道在spacemacs里这些功能都去哪里了?需要自己hacking吗?大家是怎么解决的?
spacemacs 默认设置和vim是一样的,j
和k
是 next-line
和 previous-line
, gj
和 gk
是 next-visual-line
和 previous-visual-line
如果你习惯按照 line
而不是 visual-line
来移动,那就不要改。
如果你习惯按照 visual-line
而不是 line
来移动,那就把 键绑定换一下就好。
我看你帖子开头就是把 j
和 k
绑定到 evil-next-visual-line
和 evil-previous-visual-line
了,那你应该更习惯安装 visual-line
来移动才对。可是看下文,你貌似更习惯安装 line
的形式来移动?那就不要更改原来的键绑定啊。
另外测试键绑定有没有成功,建议先在 scratch
里试一下,在别的mode尤其是 org-mode里,很容易就键冲突了啊。
我是spacemacs,放到dotspacemacs/user-config ()
下没有问题
我没有安装spacemacs,你知道该怎么设置吗?
(with-eval-after-load 'evil
(define-key evil-normal-state-map (kbd ",j") 'evil-next-line)
(define-key evil-normal-state-map (kbd ",k") 'evil-previous-line)
)
谢谢!
但是按jk碰到折行还是会跳过去。我想要的效果是按jk能跳到折行上。
我试了改成
(with-eval-after-load 'evil
(define-key evil-normal-state-map (kbd “,j”) 'evil-next-visual-line)
(define-key evil-normal-state-map (kbd “,k”) 'evil-previous-visual-line)
)
依然不行,请问应该怎么办?
(with-eval-after-load 'evil ...)
里面…部分的代码我是随便贴的,具体设置自行决定。
想要按 kj 生效就不要 leader-key:
(with-eval-after-load 'evil
(define-key evil-normal-state-map (kbd "j") 'evil-next-visual-line)
(define-key evil-normal-state-map (kbd "k") 'evil-previous-visual-line)
)
1 个赞