2014-09-11 4 views
2

В Vim у меня есть эта привязка для навигации: noremap <M-j> 5j. Это будет работать в нормальный, визуальный и визуальная линия режимы.Emacs Evil keybinding со злым-визуальным государством-картой не работает

Я хочу иметь такое же поведение в Emacs, так что я сделал:

(define-key evil-visual-state-map "\M-j" '(lambda() (interactive) (evil-next-line 5)))

(define-key evil-motion-state-map "\M-j" '(lambda() (interactive) (evil-next-line 5)))

Он будет работать в нормально и визуальном режиме, но не в визуального line режим (есть, в верхнем регистре V).

Я новичок в Emacs, исходя из Vim.

ответ

2

глядя на источник, давайте сделаем это:

(evil-define-motion myevil-next-visual-line (count) 
"Move the cursor COUNT screen lines down, or 5." 
:type exclusive 
    (let ((line-move-visual t)) 
    (evil-line-move (or count 5)))) 

и

(define-key evil-visual-state-map "\M-j" 'myevil-next-visual-line) 
+0

Спасибо за решение. Теперь, не могли бы вы помочь мне с этой проблемой? http://stackoverflow.com/questions/26519331/emacs-evil-repeat-dot-behavior – Michael

0

Если у вас есть

(defun godown() (interactive) (evil-next-line 5)) (define-key evil-visual-state-map "\M-j" 'godown)

, то вы можете сделать что-либо просто добавить

(evil-declare-motion 'godown)

ИЛИ вы можете использовать

(evil-define-motion godown() (interactive) ... )

заменить комбо defun + evil-declare-motion.

https://bitbucket.org/lyro/evil/issues/395/cant-use-evil-next-line-in-a-script-in-a

Смежные вопросы