2011-12-24 18:58:57 +08:00
|
|
|
The NERD Tree
|
|
|
|
=============
|
|
|
|
|
|
|
|
Intro
|
|
|
|
-----
|
|
|
|
|
|
|
|
The NERD tree allows you to explore your filesystem and to open files and
|
|
|
|
directories. It presents the filesystem to you in the form of a tree which you
|
|
|
|
manipulate with the keyboard and/or mouse. It also allows you to perform
|
|
|
|
simple filesystem operations.
|
|
|
|
|
|
|
|
The following features and functionality are provided by the NERD tree:
|
|
|
|
|
|
|
|
* Files and directories are displayed in a hierarchical tree structure
|
|
|
|
* Different highlighting is provided for the following types of nodes:
|
|
|
|
* files
|
|
|
|
* directories
|
|
|
|
* sym-links
|
|
|
|
* windows .lnk files
|
|
|
|
* read-only files
|
|
|
|
* executable files
|
|
|
|
* Many (customisable) mappings are provided to manipulate the tree:
|
|
|
|
* Mappings to open/close/explore directory nodes
|
|
|
|
* Mappings to open files in new/existing windows/tabs
|
|
|
|
* Mappings to change the current root of the tree
|
|
|
|
* Mappings to navigate around the tree
|
|
|
|
* ...
|
|
|
|
* Directories and files can be bookmarked.
|
|
|
|
* Most NERD tree navigation can also be done with the mouse
|
|
|
|
* Filtering of tree content (can be toggled at runtime)
|
|
|
|
* custom file filters to prevent e.g. vim backup files being displayed
|
|
|
|
* optional displaying of hidden files (. files)
|
|
|
|
* files can be "turned off" so that only directories are displayed
|
|
|
|
* The position and size of the NERD tree window can be customised
|
|
|
|
* The order in which the nodes in the tree are listed can be customised.
|
|
|
|
* A model of your filesystem is created/maintained as you explore it. This
|
|
|
|
has several advantages:
|
|
|
|
* All filesystem information is cached and is only re-read on demand
|
|
|
|
* If you revisit a part of the tree that you left earlier in your
|
|
|
|
session, the directory nodes will be opened/closed as you left them
|
|
|
|
* The script remembers the cursor position and window position in the NERD
|
|
|
|
tree so you can toggle it off (or just close the tree window) and then
|
|
|
|
reopen it (with NERDTreeToggle) the NERD tree window will appear exactly
|
|
|
|
as you left it
|
|
|
|
* You can have a separate NERD tree for each tab, share trees across tabs,
|
|
|
|
or a mix of both.
|
2013-05-14 21:39:46 +08:00
|
|
|
* By default the script overrides the default file browser (netrw), so if
|
|
|
|
you :edit a directory a (slightly modified) NERD tree will appear in the
|
2011-12-24 18:58:57 +08:00
|
|
|
current window
|
|
|
|
* A programmable menu system is provided (simulates right clicking on a node)
|
2013-05-14 21:39:46 +08:00
|
|
|
* one default menu plugin is provided to perform basic filesystem
|
2011-12-24 18:58:57 +08:00
|
|
|
operations (create/delete/move/copy files/directories)
|
|
|
|
* There's an API for adding your own keymappings
|
|
|
|
|
|
|
|
Installation
|
|
|
|
------------
|
|
|
|
|
2015-07-30 20:52:17 +08:00
|
|
|
####[pathogen.vim](https://github.com/tpope/vim-pathogen)
|
2011-12-24 18:58:57 +08:00
|
|
|
|
|
|
|
cd ~/.vim/bundle
|
|
|
|
git clone https://github.com/scrooloose/nerdtree.git
|
|
|
|
|
2014-04-09 01:03:50 +08:00
|
|
|
Then reload vim, run `:Helptags`, and check out `:help NERD_tree.txt`.
|
2011-12-24 18:58:57 +08:00
|
|
|
|
|
|
|
|
2015-07-30 20:52:17 +08:00
|
|
|
####[apt-vim](https://github.com/egalpin/apt-vim)
|
|
|
|
|
|
|
|
apt-vim install -y https://github.com/scrooloose/nerdtree.git
|
|
|
|
|
|
|
|
|
|
|
|
|
2011-12-24 18:58:57 +08:00
|
|
|
Faq
|
|
|
|
---
|
|
|
|
|
2015-05-02 19:01:22 +08:00
|
|
|
> Is there any support for `git` flags?
|
2011-12-28 05:52:43 +08:00
|
|
|
|
2015-05-02 19:01:22 +08:00
|
|
|
Yes, install [nerdtree-git-plugin](https://github.com/Xuyuanp/nerdtree-git-plugin).
|
2011-12-24 18:58:57 +08:00
|
|
|
|
2012-01-04 19:44:54 +08:00
|
|
|
|
2015-05-02 19:01:22 +08:00
|
|
|
> Can I have the nerdtree on every tab automatically?
|
2012-01-04 19:44:54 +08:00
|
|
|
|
2015-05-02 19:01:22 +08:00
|
|
|
Nope. If this is something you want then chances are you aren't using tabs and
|
|
|
|
buffers as they were intended to be used. Read this
|
|
|
|
http://stackoverflow.com/questions/102384/using-vims-tabs-like-buffers
|
2012-01-04 19:44:54 +08:00
|
|
|
|
2015-05-02 19:01:22 +08:00
|
|
|
If you are interested in this behaviour then consider [vim-nerdtree-tabs](https://github.com/jistr/vim-nerdtree-tabs)
|
2012-01-04 19:44:54 +08:00
|
|
|
|
2015-05-02 19:01:22 +08:00
|
|
|
> How can I open a NERDTree automatically when vim starts up?
|
|
|
|
|
|
|
|
Stick this in your vimrc: `autocmd vimenter * NERDTree`
|
|
|
|
|
|
|
|
> How can I open a NERDTree automatically when vim starts up if no files were specified?
|
|
|
|
|
2015-11-27 02:57:38 +08:00
|
|
|
Stick this in your vimrc:
|
2014-06-29 19:29:49 +08:00
|
|
|
|
|
|
|
autocmd StdinReadPre * let s:std_in=1
|
2014-07-03 07:46:03 +08:00
|
|
|
autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif
|
2012-01-04 19:44:54 +08:00
|
|
|
|
2015-11-27 02:57:38 +08:00
|
|
|
Note: Now start vim with plain `vim`, not `vim .`
|
|
|
|
|
2015-05-02 19:01:22 +08:00
|
|
|
> How can I map a specific key or shortcut to open NERDTree?
|
2013-01-01 02:15:55 +08:00
|
|
|
|
2015-05-02 19:01:22 +08:00
|
|
|
Stick this in your vimrc to open NERDTree with `Ctrl+n` (you can set whatever key you want):
|
2014-10-30 08:00:36 +08:00
|
|
|
|
2015-05-13 03:58:35 +08:00
|
|
|
map <C-n> :NERDTreeToggle<CR>
|
2013-01-01 02:15:55 +08:00
|
|
|
|
2015-05-02 19:01:22 +08:00
|
|
|
> How can I close vim if the only window left open is a NERDTree?
|
2012-01-04 19:44:54 +08:00
|
|
|
|
2015-05-02 19:01:22 +08:00
|
|
|
Stick this in your vimrc:
|
2012-01-04 19:44:54 +08:00
|
|
|
|
2015-11-14 20:01:55 +08:00
|
|
|
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
|
2015-05-13 03:57:49 +08:00
|
|
|
|
|
|
|
> Can I have different highlighting for different file extensions?
|
|
|
|
|
|
|
|
See here: https://github.com/scrooloose/nerdtree/issues/433#issuecomment-92590696
|
2015-09-12 01:44:06 +08:00
|
|
|
|
|
|
|
> How can I change default arrows?
|
|
|
|
|
|
|
|
Use these variables in your vimrc. Note that below are default arrow symbols
|
|
|
|
|
|
|
|
let g:NERDTreeDirArrowExpandable = '▸'
|
2015-09-12 01:52:37 +08:00
|
|
|
let g:NERDTreeDirArrowCollapsible = '▾'
|