Emacs - enable evil mode
[dotfiles.git] / emacs.d / emacs-evil.org
1 #+TITLE:Emacs Evil Config
2 #+AUTHOR: Peng Li
3 #+EMAIL: seudut@gmail.com
4
5 As the =Evil= mode is significant, and has lots of configurations, it's better put them 
6 in a separate file.
7
8 * Evil mode 
9 https://www.emacswiki.org/emacs/Evil
10
11 #+BEGIN_SRC emacs-lisp :tangle yes :results silent
12   (defun my-evil-config ()
13     "This should be called after evil-mode is loaded."
14     ;;   Buffer operations
15     (define-key evil-normal-state-map ";w" 'evil-save)
16     (define-key evil-normal-state-map ";e" 'evil-edit)
17     ;;
18     ;;  Window operations
19     (define-key evil-normal-state-map "\C-W s" 'evil-window-split)
20     (define-key evil-normal-state-map "\C-W v" 'evil-window-vsplit)
21     (define-key evil-normal-state-map ";s" 'evil-window-split)
22     (define-key evil-normal-state-map ";v" 'evil-window-vsplit)
23     (define-key evil-normal-state-map ";q" 'evil-window-delete)
24     (define-key evil-normal-state-map "\C-W o" 'delete-other-windows)
25     (define-key evil-normal-state-map "\C-W h" 'evil-window-left)
26     (define-key evil-normal-state-map "\C-W j" 'evil-window-down)
27     (define-key evil-normal-state-map "\C-W k" 'evil-window-up)
28     (define-key evil-normal-state-map "\C-W l" 'evil-window-right)
29     (define-key evil-normal-state-map "\C-h" 'evil-window-left)
30     (define-key evil-normal-state-map "\C-j" 'evil-window-down)
31     (define-key evil-normal-state-map "\C-k" 'evil-window-up)
32     (define-key evil-normal-state-map "\C-l" 'evil-window-right))
33
34   (use-package evil
35     :ensure t
36     :init
37     (setq evil-default-state 'emacs)
38     (setq evil-emacs-state-cursor '("red" box))
39     (setq evil-normal-state-cursor '("green" box))
40     (setq evil-visual-state-cursor '("orange" box))
41     (setq evil-insert-state-cursor '("red" bar))
42     (setq evil-replace-state-cursor '("red" bar))
43     (setq evil-operator-state-cursor '("red" hollow))
44     :config
45     (evil-mode t)
46     ;; (defalias 'evil-insert-state 'evil-emacs-state)
47     ;; switch to normal mode
48     ;; (key-chord-define evil-insert-state-map "jj" 'evil-normal-state)
49     ;; (key-chord-define evil-emacs-state-map "jj" 'evil-normal-state)
50     ;;
51     ;; Normal state map
52     (my-evil-config))
53
54
55 #+END_SRC
56
57 * Evil-escape
58 [[https://github.com/syl20bnr/evil-escape][evil-escape]], escape from anything with customizable key sequence.
59 #+BEGIN_SRC emacs-lisp :tangle yes :results silent
60   (use-package evil-escape
61     :ensure t
62     :init
63     (setq-default evil-escape-delay 0.2)
64     (setq-default evil-escape-key-sequence "jj")
65     (setq-default evil-escape-excluded-states '(emacs))
66     :config
67     (evil-escape-mode))
68 #+END_SRC
69
70 * Provide 
71 #+BEGIN_SRC emacs-lisp :tangle yes :results silent
72   (provide 'init-evil-mode)
73 #+END_SRC