Neotree is an Emacs package that gives you an integrated sidebar file browser, adapted from Vim's NerdTree extension. It can provide nice displays of project structure, and give you an easier path to quickly jump to new files.



Install the neotree package with M-x package-install neotree RET.


Once the package is installed, you can use Emacs keybindings like C-s or C-r to search in the buffer. RET will toggle folders and open files. To set a folder as the new display root, use C-c C-c.


I bind the F8 key to toggle the neotree window:

;; neotree
(require 'neotree)
(global-set-key [f8] 'neotree-toggle)

You can control the size of the neotree window, and make it fit the lines displayed like this:

(setq neo-window-fixed-size nil)
(setq neo-theme (if (display-graphic-p) 'icons 'arrow))
(defun neotree--fit-window (type path c)
  "Resize neotree window to fit contents based on TYPE, with PATH and C as unused variables as far as this function is concerned."
  (if (eq type 'directory)
       (let ((fit-window-to-buffer-horizontally t))
(add-hook 'neo-enter-hook #'neotree--fit-window)


You can get beautiful icons in the browser by installing the all-the-icons package in Emacs, then running M-x all-the-icons-install-fonts. This might take a little while, but once it's done, you will have per-filetype icons in Neotree.

Note: This appears to have issues in some versions of RedHat Linux.