+ (add-hook 'eshell-mode-hook (lambda ()
+ (when (and (boundp 'evil-mode) evil-mode)
+ (dolist (key-fun '(("f" . ivy-switch-buffer)
+ ("b" . counsel-projectile-find-file)
+ ("r" . counsel-recentf)
+ ("e" . sd/toggle-project-eshell)
+ ("d" . dired)
+ ("'" . other-window)
+ ("q" . evil-quit)))
+ (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
+ (with-eval-after-load "evil"
+ ;; file and directory explore
+ (define-key dired-mode-map (kbd "C-h") nil)
+ (define-key dired-mode-map (kbd "C-k") nil)
+ (evil-define-key 'normal dired-mode-map (kbd "H") 'dired-omit-mode)
+ (evil-define-key 'normal dired-mode-map (kbd "g") 'dired-goto-file)
+ (evil-define-key 'normal dired-mode-map (kbd "r") 'revert-buffer)
+ (evil-define-key 'normal dired-mode-map (kbd "i") 'dired-maybe-insert-subdir)
+ (evil-define-key 'normal dired-mode-map (kbd "TAB") 'diredp-next-subdir)
+ (evil-define-key 'normal dired-mode-map (kbd "J") 'diredp-next-subdir)
+ (evil-define-key 'normal dired-mode-map (kbd "K") 'diredp-prev-subdir)
+ (evil-define-key 'normal dired-mode-map (kbd "l") 'dired-display-file)
+ (evil-define-key 'normal dired-mode-map (kbd "f") 'dired-narrow)
+ (evil-define-key 'normal dired-mode-map (kbd "j") 'sd/dired-next-line)
+ (evil-define-key 'normal dired-mode-map (kbd "k") 'sd/dired-previous-line)
+ (evil-define-key 'normal dired-mode-map (kbd "h") 'sd/dired-up-directory)
+ (evil-define-key 'normal dired-mode-map [C-backspace] 'dired-up-directory)
+ ;; file and folder deletion
+ (evil-define-key 'normal dired-mode-map (kbd "m") 'dired-mark)
+ (evil-define-key 'normal dired-mode-map (kbd "u") 'dired-unmark)
+ (evil-define-key 'normal dired-mode-map (kbd "U") 'dired-unmark-all-marks)
+ (evil-define-key 'normal dired-mode-map (kbd "z") #'sd/dired-get-size)
+ (evil-define-key 'normal dired-mode-map (kbd "d") 'dired-flag-file-deletion)
+ (evil-define-key 'normal dired-mode-map (kbd "x") 'dired-do-flagged-delete)
+ (evil-define-key 'normal dired-mode-map (kbd "D") 'dired-do-delete)
+ ;; File and folder creation
+ (evil-define-key 'normal dired-mode-map (kbd "c") 'sd/dired-new-file)
+ (evil-define-key 'normal dired-mode-map (kbd "+") 'dired-create-directory)
+ (evil-define-key 'normal dired-mode-map (kbd "C") 'dired-do-copy)
+ (evil-define-key 'normal dired-mode-map (kbd "R") 'dired-do-rename)
+
+ ;; keep some normap mapping
+ (evil-define-key 'normal dired-mode-map (kbd "/") 'evil-ex-search-forward)
+ (evil-define-key 'normal dired-mode-map (kbd "n") 'evil-search-next)
+ (evil-define-key 'normal dired-mode-map (kbd "N") 'evil-search-previous)
+ (evil-define-key 'normal dired-mode-map (kbd "v") 'evil-visual-char))
+