我不喜欢插入状态,所以我想用emacs-state替换它.但是这个设置不起作用:
(add-hook 'evil-insert-state-entry-hook 'evil-emacs-state)
Run Code Online (Sandbox Code Playgroud)
按o或之后cw,我仍处于插入状态.
这种方法怎么样:
(setq evil-insert-state-map (make-sparse-keymap))
(define-key evil-insert-state-map (kbd "<escape>") 'evil-normal-state)
Run Code Online (Sandbox Code Playgroud)
我用它,它似乎做了伎俩.而且由于你没有改变状态,你保留了与状态相关的配置,如光标颜色等.
没想到还没有人发帖。。。
(defalias 'evil-insert-state 'evil-emacs-state)
Run Code Online (Sandbox Code Playgroud)
任何试图调用的东西evil-insert-state最终都会调用evil-emacs-state. 适用于 i、a、o、O 等。
Evil 现在有一种 bulitin 方法可以做到这一点
(setq evil-disable-insert-state-bindings t)
Run Code Online (Sandbox Code Playgroud)
在加载邪恶之前
参考:https : //github.com/noctuid/evil-guide#use-some-emacs-keybindings
告诉我这是如何运作的。这是一个基本上evil-insert-state用evil-emacs-state. 问题是弄清楚如何使用退出键退出 emacs 状态。例如,当我使用ESCkey 退出 emacs 状态时,此版本工作正常,但当我尝试使用以下命令执行相同操作时则不行C-[:
; redefine emacs state to intercept the escape key like insert-state does:
(evil-define-state emacs
"Emacs state that can be exited with the escape key."
:tag " <EE> "
:message "-- EMACS WITH ESCAPE --"
:input-method t
;; :intercept-esc nil)
)
(defadvice evil-insert-state (around emacs-state-instead-of-insert-state activate)
(evil-emacs-state))
Run Code Online (Sandbox Code Playgroud)