#+TITLE: Evil #+OPTIONS: toc:nil #+PROPERTY: header-args:emacs-lisp :shebang ";;; -*- lexical-binding: t; -*-\n" ** Table of Contents :toc_4: - [[#evil][Evil]] ** Evil Evil mode and related packages. #+BEGIN_SRC emacs-lisp (use-package undo-tree :config (setq undo-tree-auto-save-history t) (setq undo-tree-history-directory-alist `(("." . ,(concat dot-cache-dir "/undo-tree")))) (global-undo-tree-mode)) (use-package goto-chg) (use-package evil :after (undo-tree goto-chg) :init (setq evil-ex-complete-emacs-commands nil) (setq evil-kill-on-visual-paste nil) (setq evil-operator-state-cursor 'box) ; Do not set half cursor (setq evil-search-module 'evil-search) (setq evil-split-window-below t) (setq evil-undo-system 'undo-tree) (setq evil-vsplit-window-right t) (setq evil-want-C-u-scroll t) (setq evil-want-Y-yank-to-eol t) (setq evil-want-keybinding nil) ; Needed by evil-collection :config (defun dot/evil-normal-sort-paragraph () "Sort paragraph cursor is under. Vim equivalence: vip:sort" (interactive) (let ((p (point))) (evil-visual-char) (call-interactively 'evil-inner-paragraph) (evil-ex-sort (region-beginning) (region-end)) (goto-char p))) (defun dot/evil-insert-shift-left () "Shift line left, retains cursor position. Vim equivalence: " (interactive) (evil-shift-left-line 1)) (defun dot/evil-insert-shift-right () "Shift line right, retains cursor position. Vim equivalence: " (interactive) (insert "\t")) (defun dot/evil-visual-shift-left () "Shift visual selection left, retains the selection. Vim equivalence: gv" (interactive) (call-interactively #'evil-shift-right) (setq deactivate-mark nil)) (evil-mode)) #+END_SRC Evil command aliases. #+BEGIN_SRC emacs-lisp (use-package evil-ex :ensure nil ; evil-ex.el is part of evil :after evil :config (evil-ex-define-cmd "W" "w") (evil-ex-define-cmd "Q" "q") (evil-ex-define-cmd "WQ" "wq") (evil-ex-define-cmd "Wq" "wq")) #+END_SRC #+BEGIN_SRC emacs-lisp (use-package evil-collection :after evil :init (setq evil-collection-company-use-tng nil) (setq evil-collection-key-blacklist (list dot/leader-key dot/localleader-key dot/leader-alt-key dot/localleader-alt-key "M-h" "M-j" "M-k" "M-l")) (setq evil-collection-setup-minibuffer t) :config (evil-collection-init)) (use-package evil-nerd-commenter :defer t :after evil) #+END_SRC