;;; init-dired.el --- Dired with evil-flavoured navigation -*- lexical-binding: t; -*- ;;; Commentary: ;; Dired stays vanilla — every binding points at a stock dired command. ;; They're remapped only so evil's normal-state keys don't shadow dired's ;; own single-letter commands. ;;; Code: ;; Reuse the current dired buffer when descending/ascending (no pileup). (setq dired-kill-when-opening-new-dired-buffer t) ;; Order directories first (setq dired-listing-switches "-agho --group-directories-first") (with-eval-after-load 'dired (evil-define-key 'normal dired-mode-map ;; Navigation. RET and both bound so evil's global ;; doesn't shadow them here. (kbd "j") #'dired-next-line (kbd "k") #'dired-previous-line (kbd "h") #'dired-up-directory (kbd "l") #'dired-find-file (kbd "RET") #'dired-find-file [return] #'dired-find-file (kbd "q") #'quit-window ;; Marking. (kbd "SPC") #'dired-mark (kbd "m") #'dired-mark (kbd "u") #'dired-unmark (kbd "U") #'dired-unmark-all-marks (kbd "t") #'dired-toggle-marks ;; Deletion: d flags, x executes flags, D deletes now. (kbd "d") #'dired-flag-file-deletion (kbd "x") #'dired-do-flagged-delete (kbd "D") #'dired-do-delete ;; File operations. (kbd "R") #'dired-do-rename (kbd "C") #'dired-do-copy (kbd "y") #'dired-copy-filename-as-kill (kbd "!") #'dired-do-shell-command (kbd "+") #'dired-create-directory (kbd "f") #'dired-create-directory (kbd "a") #'dired-create-empty-file ;; Misc. (kbd "g r") #'revert-buffer ; refresh listing (kbd "(") #'dired-hide-details-mode)) ; toggle perms/size/date columns (provide 'init-dired) ;;; init-dired.el ends here