Files
org-roam/20230522130259-neotree.org
2025-11-05 09:18:11 +01:00

3.2 KiB
Raw Permalink Blame History

neotree

Neotree is a package in emacs that displays the directory tree of directories. Quasi a visualization of 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 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:

(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)))

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:

(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)

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 root directory. C-c C-p Copy a file or a directory.