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

74 lines
3.2 KiB
Org Mode
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
: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.