Evil

2018-10-10  本文已影响8人  wlianfu

1,强化Emacs的编辑能力(你当然可以自己写函数,有现成的不更好么),同时你也不会感觉到Vim的影子!关键的关键是C-o啊!
设置如下:

(add-to-list 'load-path "~/.emacs.d/lisp/evil") 
(require 'evil) 
(evil-mode 1) ;以上的是设置启动emacs载入evil 

(setq evil-default-state 'emacs)
;这个是打开文件后默认进入emacs模式
;我还要在emacs和vim模式里面切换:C-z,换来换去啊
;要在Vim里面使用emacs的功能!OK,使用 \ 作为leader就OK了

(define-key evil-emacs-state-map (kbd "C-o") 'evil-execute-in-normal-state)
; C-o按键调用vim功能(就是临时进入normal模式,然后自动回来)
; 比如,你要到第一行,可以使用emacs的 M-<,也可以使用evil的C-o gg
; 其中C-o是进入vim模式 gg是去第一行,命令之后自动还原emacs模式!
; "Fuck you!" 如何删除""里面的内容呢?Emacs的话,默认文本对象能力不强
; 有了evil的拓展 C-o di" 轻轻松松搞定~
; 比如C-o 3dd C-o dib C-o yy C-o p C-o f * 舒服啊~发挥想象力吧

; 下面4行是设置使用C-d作为ESC按键,这个自己看吧

(define-key evil-insert-state-map (kbd "C-d") 'evil-change-to-previous-state) 
(define-key evil-normal-state-map (kbd "C-d") 'evil-force-normal-state) 
(define-key evil-replace-state-map (kbd "C-d") 'evil-normal-state) 
(define-key evil-visual-state-map (kbd "C-d") 'evil-exit-visual-state) 

; 以下设置时使用t作为多剪贴板的起始按键,比如 tay(不是 "ay哦) tap(就是"ap啦)~
(define-key evil-normal-state-map "t" 'evil-use-register)

; 注意,如果有什么bug的话,把这个函数也添加了
; evil作者给的代码,不知道有没有添加到插件里面去

(defun evil-execute-in-normal-state () 
"Execute the next command in Normal state. C-o o works in insert-mode" 
(interactive) 
(evil-delay '(not (memq this-command 
'(evil-execute-in-normal-state 
evil-use-register 
digit-argument 
negative-argument 
universal-argument 
universal-argument-minus 
universal-argument-more 
universal-argument-other-key))) 
`(progn 
(if (evil-insert-state-p) 
(let ((prev-state (cdr-safe (assoc 'normal evil-previous-state-alist)))) 
(evil-change-state prev-state) 
(setq evil-previous-state 'normal)) 
(evil-change-to-previous-state)) 
(setq evil-move-cursor-back ',evil-move-cursor-back)) 
'post-command-hook) 
(setq evil-move-cursor-back nil) 
(evil-normal-state) 
(evil-echo "Switched to Normal state for the next command ...")) 

尊重原创,引用地址:https://www.douban.com/group/topic/34775654/

上一篇下一篇

猜你喜欢

热点阅读