如何在切换两种按键映射evil/emacs

目前使用的是spacemacs, 编程的时候使用的是evil mode。 但是经常又要使用中文写文章,这个时候,中文输入和vi按键冲突,太痛苦了。 所以请教一下:如何 进入org-mode就切换成emacs原生按键,关闭evil。

(下面代码添加在 dotspacemacs/user-init)下面两种思路都不成功。

  1. 一种思路是在进入org-mode之前,删除掉org-mode的evil-mode hook。
  ;; evil-hook disable
  (spacemacs|use-package-add-hook org-mode
    :post-init
    ;;(remove-hook 'org-mode-hook 'spacemacs//evil-org-mode) 
    ;;(remove-hook 'org-mode-hook 'spacemacs/org-setup-evil-surround)
  1. 另一种思路,添加hook是在进入org-mode后,关掉evil-mode
(add-hook 'org-mode-hook 'turn-off-evil-mode)

××××××××××××但是都没有成功×××××××××××

1 个赞

C-z,这个是停用evil使用emacs原生方式

直接按ctrl+z,切换到emacs state。这样最直接。话说你如果只是被输入法切换折腾的话用个内置输入法,比如pyim,就好了啊。没必要去动orgmode。

我在解决优先lispy按键的做法把evil-insert-state-map设为nil,然后又保escape回到normal模式。可以在orgmode下试一下这种思路。

(add-hook 'emacs-lisp-mode-hook '(lambda () (lispy-mode t) (setcdr evil-insert-state-map lispy-mode-map) (define-key evil-insert-state-map [escape] 'evil-normal-state)))

感谢,问题解决。 果然还是应该去研究evil或者pyim。 出发点有点问题。 刚试了一下,ctrl+z,感觉还不错。 之前在mac上使用ctrl+z,虽然会回到insert模式,但是emacs 的ctrl+n,ctrl+p总是不能正常上下行。然后就放弃这个方式了。开始研究org mode的evil模式切换。

C-z,不是evil-insert-mode,是emacs的原生操作,C-nC-p可以正常的上下移动,我不知道你的为啥不行,如果你想进入org-mode就使用emacs操作方式,可以试试下面这个hook,C-z执行的就是evil-emacs-state

(add-hook 'org-mode-hook 'evil-emacs-state)
1 个赞