或者,有没有 yank 后不移动光标的办法?
谢谢
或者,有没有 yank 后不移动光标的办法?
谢谢
没看懂你想干嘛。你确定你说的是y?
我觉得他的意思是让evil在按y复制之后不会取消对选区的选定,或者复制之后让光标保持在之前的位置(默认复制之后光标会跳到选区开头的吧)。其实我也想知道该怎么做_(:зゝ∠)_
Spacemacs 里面定义了一个 evil-map
宏:
(evil-map visual "y" "ygv")
可以通过这种方式来做到。
evil-map的定义如下:
(defmacro evil-map (state key seq)
"Map for a given STATE a KEY to a sequence SEQ of keys.
Can handle recursive definition only if KEY is the first key of SEQ.
Example: (evil-map visual \"<\" \"<gv\")"
(let ((map (intern (format "evil-%S-state-map" state))))
`(define-key ,map ,key
(lambda ()
(interactive)
,(if (string-equal key (substring seq 0 1))
`(progn
(call-interactively ',(lookup-key evil-normal-state-map key))
(execute-kbd-macro ,(substring seq 1)))
(execute-kbd-macro ,seq))))))
忘记你还有一个 esc,
可以使用下面的设置:
(defun my-evil-yank ()
(interactive)
(save-excursion
(call-interactively 'evil-yank)))
(define-key evil-visual-state-map (kbd "y") 'my-evil-yank)
刚刚在 vim 下面也试了一下,光标的位置差了一个字符, my-evil-yank
可以修改成:
(defun my-evil-yank ()
(interactive)
(save-excursion
(call-interactively 'evil-yank))
(backward-char))
注:添加了一个 backward-char
的调用,不知道是我这边设置的原因还是其它。总之,如果大家有发现 cursor 的位置不正确,可以自行调整。
Work like a charm!
学到了,非常感谢
原来是在visual mode下啊。。我想了半天