首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在视觉线条之间移动,如何在邪恶模式下移动新行?

如何在视觉线条之间移动,如何在邪恶模式下移动新行?
EN

Stack Overflow用户
提问于 2014-01-02 12:25:13
回答 4查看 6.1K关注 0票数 20

evil-mode的“正常”状态下,光标的移动是在模拟vim的标准行为。我希望通过以下两种方式使其更类似于标准emacs行为。

  1. 我希望垂直移动发生在视觉线,而不是逻辑线。也就是说,如果一行被包装,按下j<down>应该移动到同一行的下一部分。
  2. 我要水平移动不要停在换行线上。也就是说,如果光标位于一行的末尾,按l<right>就应该移动到下一行。

我怎样才能做到这一点?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-01-03 08:20:44

我找到了解决问题2的方法:原来有一个变量evil-cross-lines。将其设置为t只解决了这个问题。

与PythonNut的垂直移动修复一起,下面是完整的解决方案:

代码语言:javascript
复制
;; Make movement keys work like they should
(define-key evil-normal-state-map (kbd "<remap> <evil-next-line>") 'evil-next-visual-line)
(define-key evil-normal-state-map (kbd "<remap> <evil-previous-line>") 'evil-previous-visual-line)
(define-key evil-motion-state-map (kbd "<remap> <evil-next-line>") 'evil-next-visual-line)
(define-key evil-motion-state-map (kbd "<remap> <evil-previous-line>") 'evil-previous-visual-line)
; Make horizontal movement cross lines                                    
(setq-default evil-cross-lines t)
票数 32
EN

Stack Overflow用户

发布于 2015-09-18 20:20:15

重新映射解决方案将使dj' like combinations fail. Below advice solution still keeps right behavior fordj':

代码语言:javascript
复制
(defun evil-next-line--check-visual-line-mode (orig-fun &rest args)
  (if visual-line-mode
      (apply 'evil-next-visual-line args)
    (apply orig-fun args)))

(advice-add 'evil-next-line :around 'evil-next-line--check-visual-line-mode)

(defun evil-previous-line--check-visual-line-mode (orig-fun &rest args)
  (if visual-line-mode
      (apply 'evil-previous-visual-line args)
    (apply orig-fun args)))

(advice-add 'evil-previous-line :around 'evil-previous-line--check-visual-line-mode)
票数 5
EN

Stack Overflow用户

发布于 2014-01-02 18:56:31

我似乎不能正确地行动起来。C-h k lright-char

代码语言:javascript
复制
;; kill two birds with one stone using remap: arrow keys and h,j,k,l
(define-key evil-normal-state-map (kbd "<remap> <evil-next-line>") 'evil-next-visual-line)
(define-key evil-motion-state-map (kbd "<remap> <evil-previous-line>") 'evil-previous-visual-line)
(define-key evil-motion-state-map (kbd "<remap> <evil-next-line>") 'evil-next-visual-line)
(define-key evil-normal-state-map (kbd "<remap> <evil-previous-line>") 'evil-previous-visual-line)
(define-key evil-normal-state-map (kbd "<remap> <evil-backward-char>") 'left-char)
(define-key evil-motion-state-map (kbd "<remap> <evil-forward-char>") 'right-char)
(define-key evil-normal-state-map (kbd "<remap> <evil-backward-char>") 'left-char)
(define-key evil-motion-state-map (kbd "<remap> <evil-forward-char>") 'right-char)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20882935

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档