74 lines
3.2 KiB
Org Mode
74 lines
3.2 KiB
Org Mode
: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.
|
||
|
||
|