(setq evil-replace-state-cursor '("red" bar))
(setq evil-operator-state-cursor '("red" hollow))
;; others, don't move back cursor when exit insert mode
- (setq evil-move-cursor-back nil)
+ ;; (setq evil-move-cursor-back nil)
:config
(use-package evil-leader
:ensure t
(modify-syntax-entry ?_ "w")
;; (modify-syntax-entry ?- "w")
))
-
- (with-eval-after-load "evil"
- ;; remap x to X as `evil-move-cursor-back' is set nil
- ;; (define-key evil-normal-state-map [remap evil-delete-char] 'evil-delete-backward-char)
- (define-key evil-normal-state-map (kbd "x") (lambda () (interactive)
- (let ((org evil-move-cursor-back))
- (setq evil-move-cursor-back t)
- (call-interactively 'evil-delete-char)
- ;; (evil-delete-char)
- (setq evil-move-cursor-back org)))))
#+END_SRC
** Initial mode and state config
* Key bindings
** Evil-Leader
#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+ (defun sd/swith-to-buffer ()
+ "switch to buffer"
+ (interactive)
+ (if (projectile-project-p)
+ (projectile-switch-to-buffer)
+ (ivy-switch-buffer)))
+
+ (ivy-set-actions
+ 'sd/swith-to-buffer
+ '(("j" ivy--switch-buffer-other-window-action "other window")))
+
(with-eval-after-load "evil-leader"
(cl-loop for (key . fun ) in '(("F" . counsel-projectile-switch-to-buffer)
- ("f" . ivy-switch-buffer)
+ ("f" . sd/swith-to-buffer)
("b" . counsel-projectile-find-file)
("r" . ivy-recentf)
("w" . save-buffer)
(define-key map (kbd ",") 'evil-repeat-find-char))
(list evil-normal-state-map evil-motion-state-map))
-
- ;; (define-key evil-normal-state-map "s" nil)
- ;; (define-key evil-normal-state-map "sj" 'ivy-switch-buffer)
- ;; normal state
- ;; (define-key evil-normal-state-map (kbd "C-SPC") 'mode-line-other-buffer)
- (define-key evil-normal-state-map (kbd "C-;") 'previous-multiframe-window)
;; insert state
- (define-key evil-insert-state-map (kbd "C-p") 'previous-line)
- (define-key evil-insert-state-map (kbd "C-n") 'next-line)
- (define-key evil-insert-state-map (kbd "C-h") 'delete-backward-char)
- (define-key evil-insert-state-map (kbd "C-a") 'move-beginning-of-line)
- (define-key evil-insert-state-map (kbd "C-e") 'move-end-of-line)
- (define-key evil-insert-state-map (kbd "C-k") 'kill-line)
+ (cl-loop for (key-sequence . fun) in '(("C-;" . iedit-mode)
+ ("C-n" . next-line)
+ ("C-p" . previous-line)
+ ("C-a" . move-beginning-of-line)
+ ("C-e" . move-end-of-line)
+ ("C-h" . delete-backward-char)
+ ("C-k" . kill-line))
+ do (define-key evil-insert-state-map (kbd key-sequence) fun))
+
+ ;; remap some vim keybindings
+ (dolist (map (list
+ evil-normal-state-map
+ evil-visual-state-map
+ evil-motion-state-map))
+ (cl-loop for (keys . fun) in '(("'" . evil-goto-mark)
+ ("`" . evil-goto-mark-line))
+ do (define-key map (kbd keys) fun)))
+
+
+
;; motion mode
- (define-key evil-motion-state-map (kbd "SPC") 'scroll-up-command)
- (define-key evil-motion-state-map (kbd "S-SPC") 'scroll-down-command))
+ ;; (define-key evil-motion-state-map (kbd "SPC") 'scroll-up-command)
+ ;; (define-key evil-motion-state-map (kbd "S-SPC") 'scroll-down-command)
+ )
+
+
+ ;; (keymapp (car (list evil-normal-state-map evil-visual-state-map)))
+
+ ;; (keymapp (car '(evil-normal-state-map evil-visual-state-map)))
+ ;; (keymapp (car `(,evil-normal-state-map ,evil-visual-state-map)))
+
+
+ ;; (keymapp evil-normal-state-map)
+ ;; (keymapp 'evil-normal-state-map)
+ ;; (keymapp `,evil-normal-state-map)
#+END_SRC
(evil-define-key 'emacs eshell-mode-map (kbd (concat evil-leader/leader (car key-fun))) (cdr key-fun))))
;; (define-key eshell-mode-map (kbd "C-j") nil)
))
-
- ;;
- ;; (add-hook 'eshell-mode-map
- ;; (lambda ()
- ;; (mapc (lambda (key-fun)
- ;; (evil-define-key 'emacs eshell-mode-map (kbd (concat evil-leader/leader (car key-fun))) (cdr key-fun)))
- ;; '(("e" . dired)))))
-
- ;; (add-hook 'eshell-mode-hook (lambda ()
- ;; (loop for (key . fun) in '(
- ;; ("e" . sd/toggle-project-eshell))
- ;; do (evil-define-key 'emacs eshell-mode-map (kbd (concat evil-leader/leader key)) fun))))
#+END_SRC
** Dired mode
#+BEGIN_SRC emacs-lisp :tangle yes :results silent
** expand region
#+BEGIN_SRC emacs-lisp :tangle yes :results silent
- (with-eval-after-load "evil"
- (with-eval-after-load "expand-region"
- (define-key evil-normal-state-map (kbd "SPC") 'er/expand-region)
- (define-key evil-visual-state-map (kbd "SPC") 'er/expand-region)
- (define-key evil-visual-state-map (kbd "S-SPC") 'er/contract-region)
- (define-key evil-normal-state-map (kbd "S-SPC") 'er/contract-region)))
+ ;; (with-eval-after-load "evil"
+ ;; (with-eval-after-load "expand-region"
+ ;; (define-key evil-normal-state-map (kbd "SPC") 'er/expand-region)
+ ;; (define-key evil-visual-state-map (kbd "SPC") 'er/expand-region)
+ ;; (define-key evil-visual-state-map (kbd "S-SPC") 'er/contract-region)
+ ;; (define-key evil-normal-state-map (kbd "S-SPC") 'er/contract-region)))
#+END_SRC
** Org Mode (worf mode) and Lispy mode
(evil-define-key 'normal worf-mode-map (kbd "]") (lambda ()
(interactive)
(call-interactively #'worf-forward)
- (evil-emacs-state)))
- ;; (evil-define-key 'normal worf-mode-map (kbd "g") (lambda ()
- ;; (interactive)
- ;; (wspecial-worf-goto)
- ;; (evil-emacs-state)))
- ))
+ (evil-emacs-state)))))
#+END_SRC
** Avy & Evil
#+BEGIN_SRC emacs-lisp :tangle yes :results silent
+ (setq avy-keys '(?a ?s ?d ?g
+ ?h ?k ?l
+ ?q ?w ?e ?r ?t
+ ?y ?u ?i ?o ?p
+ ?z ?x ?c ?v ?b
+ ?n ?m ?f ?j 59))
+ ;; (setq avy-background t)
+ (setq avy-all-windows nil)
(with-eval-after-load "evil"
(dolist (map (list evil-normal-state-map
evil-visual-state-map
evil-motion-state-map))
- (define-key map (kbd "J") 'avy-goto-line-below)
- (define-key map (kbd "K") 'avy-goto-line-above)
- (define-key map (kbd "F") 'avy-goto-char)
- (define-key map (kbd "W") 'avy-goto-char-timer)))
+ (define-key map (kbd "gw") 'avy-goto-word-0-below)
+ (define-key map (kbd "gb") 'avy-goto-word-0-above)
+ (define-key map (kbd "ge") 'avy-goto-word-0)
+ (define-key map (kbd "gc") 'avy-goto-char)))
#+END_SRC
** ggtags