A tree explorer plugin for navigating the filesystem
Clone or download
scrooloose and vim-scripts Version 5.0.0
- Refactor the code significantly:
    * Break the classes out into their own files.
    * Make the majority of the code OO - previously large parts were
      effectively a tangle of "global" methods.
- Add an API to assign flags to nodes. This allows VCS plugins like
  https://github.com/Xuyuanp/nerdtree-git-plugin to exist. Thanks to
  Xuyuanp for helping design/test/build said API.
- add 'scope' argument to the key map API see :help NERDTreeAddKeyMap()
- add magic [[dir]] and [[file]] flags to NERDTreeIgnore
- add support for custom path filters. See :help NERDTreeAddPathFilter()
- add path listener API. See :help NERDTreePathListenerAPI.
- expand the fs menu functionality to list file properties (PhilRunninger,
  apbarrero, JESii)
- make bookmarks work with `~` home shortcuts (hiberabyss)
- show OSX specific fsmenu options in regular vim on mac (evindor)
- make dir arrow icons configurable (PickRelated)
- optimise node sorting performance when opening large dirs (vtsang)
- make the root note render prettier by truncating it at a path slash (gcmt)
- remove NERDChristmasTree option - its always christmas now
- add "cascade" open and closing for dirs containing only another single
  dir. See :help NERDTreeCascadeOpenSingleChildDir (pendulm)

Many other fixes, doc updates and contributions from:
cperl82 - many small fixes
Latest commit e5d1943 Nov 12, 2015
Failed to load latest commit information.
autoload Version 5.0.0 Nov 15, 2015
doc Version 5.0.0 Nov 15, 2015
lib/nerdtree Version 5.0.0 Nov 15, 2015
nerdtree_plugin Version 5.0.0 Nov 15, 2015
plugin Version 5.0.0 Nov 15, 2015
syntax Version 5.0.0 Nov 15, 2015
.gitignore Version 5.0.0 Nov 15, 2015
CHANGELOG Version 5.0.0 Nov 15, 2015
LICENCE Version 5.0.0 Nov 15, 2015
README Version 1.0beta1: Initial upload Oct 18, 2010
README.markdown Version 5.0.0 Nov 15, 2015


The NERD Tree


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.
  • 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 current window
  • A programmable menu system is provided (simulates right clicking on a node)
    • one default menu plugin is provided to perform basic filesystem operations (create/delete/move/copy files/directories)
  • There's an API for adding your own keymappings



cd ~/.vim/bundle
git clone https://github.com/scrooloose/nerdtree.git

Then reload vim, run :Helptags, and check out :help NERD_tree.txt.


apt-vim install -y https://github.com/scrooloose/nerdtree.git


Is there any support for git flags?

Yes, install nerdtree-git-plugin.

Can I have the nerdtree on every tab automatically?

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

If you are interested in this behaviour then consider vim-nerdtree-tabs

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?

Stick this in your vimrc

autocmd StdinReadPre * let s:std_in=1
autocmd VimEnter * if argc() == 0 && !exists("s:std_in") | NERDTree | endif

How can I map a specific key or shortcut to open NERDTree?

Stick this in your vimrc to open NERDTree with Ctrl+n (you can set whatever key you want):

map <C-n> :NERDTreeToggle<CR>

How can I close vim if the only window left open is a NERDTree?

Stick this in your vimrc:

autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | endif

Can I have different highlighting for different file extensions?

See here: https://github.com/scrooloose/nerdtree/issues/433#issuecomment-92590696

How can I change default arrows?

Use these variables in your vimrc. Note that below are default arrow symbols

let g:NERDTreeDirArrows = 1
let g:NERDTreeDirArrowExpandable = '▸'
let g:NERDTreeDirArrowCollapsible = '▾'