:PROPERTIES: :ID: f3aaa9f1-525b-4ae6-9dce-efe22c8b2107 :END: #+title: neotree #+filetags: :EMACS: Neotree is a package in [[id:5f1df0e1-384f-4685-ae1e-fec2431b04e5][emacs]] that displays the directory tree of directories. Quasi a visualization of [[id:50326e0d-4ae7-46b3-bcda-27c47f0fe569][dired]]. Installed by: (add-to-list 'load-path "/some/path/neotree") (require 'neotree) (global-set-key [f8] 'neotree-toggle) (setq neo-smart-open t) and can be modified with [[id:163e2614-cce0-4e66-a593-a2113a7b3cd1][evil-mode]] in case of complications: * Use with evil mode If you use evil-mode, by default some of evil key bindings conflict with neotree-mode keys. For example, you cannot use q to hide NeoTree. To make NeoTree key bindings in effect, you can bind those keys in evil-normal-state-local-map in neotree-mode-hook, as shown in below code: #+begin_src emacs-lisp (add-hook 'neotree-mode-hook (lambda () (define-key evil-normal-state-local-map (kbd "TAB") 'neotree-enter) (define-key evil-normal-state-local-map (kbd "SPC") 'neotree-quick-look) (define-key evil-normal-state-local-map (kbd "q") 'neotree-hide) (define-key evil-normal-state-local-map (kbd "RET") 'neotree-enter) (define-key evil-normal-state-local-map (kbd "g") 'neotree-refresh) (define-key evil-normal-state-local-map (kbd "n") 'neotree-next-line) (define-key evil-normal-state-local-map (kbd "p") 'neotree-previous-line) (define-key evil-normal-state-local-map (kbd "A") 'neotree-stretch-toggle) (define-key evil-normal-state-local-map (kbd "H") 'neotree-hidden-file-toggle))) #+end_src In recent versions of evil-mode you can create key bindings for specific modes using evil-define-key, so another way to override mappings in neotree-mode is as shown below: #+begin_src emacs-lisp (evil-define-key 'normal neotree-mode-map (kbd "TAB") 'neotree-enter) (evil-define-key 'normal neotree-mode-map (kbd "SPC") 'neotree-quick-look) (evil-define-key 'normal neotree-mode-map (kbd "q") 'neotree-hide) (evil-define-key 'normal neotree-mode-map (kbd "RET") 'neotree-enter) (evil-define-key 'normal neotree-mode-map (kbd "g") 'neotree-refresh) (evil-define-key 'normal neotree-mode-map (kbd "n") 'neotree-next-line) (evil-define-key 'normal neotree-mode-map (kbd "p") 'neotree-previous-line) (evil-define-key 'normal neotree-mode-map (kbd "A") 'neotree-stretch-toggle) (evil-define-key 'normal neotree-mode-map (kbd "H") 'neotree-hidden-file-toggle) #+end_src * Keybindings Only in Neotree Buffer: n next line, p previous line。 SPC or RET or TAB Open current item if it is a file. Fold/Unfold current item if it is a directory. U Go up a directory g Refresh A Maximize/Minimize the NeoTree Window H Toggle display hidden files O Recursively open a directory C-c C-n Create a file or create a directory if filename ends with a ‘/’ C-c C-d Delete a file or a directory. C-c C-r Rename a file or a directory. C-c C-c Change the [[id:673d1cb1-536b-42f1-a046-40a8937c4283][root]] directory. C-c C-p Copy a file or a directory.