github github
stars 5,574
issues 52
subscribers 20
forks 570



17 hours ago

A File Explorer For Neovim Written In Lua


Automatic updates

File type icons

Git integration

Diagnostics integration: LSP and COC

(Live) filtering

Cut, copy, paste, rename, delete, create

Highly customisable

Take a look at the wiki for Showcases, Tips, Recipes and more.

Community support: matrix


neovim >=0.8.0

nvim-web-devicons is optional and used to display file icons. It requires a patched font. Your terminal emulator must be configured to use that font, usually "Hack Nerd Font"


Please install via your preferred package manager. See Installation for specific package manager instructions.


nvim-tree/nvim-web-devicons optional, for file icons

Disabling netrw is strongly advised, see :help nvim-tree-netrw

Quick Start


Setup the plugin in your init.lua

-- disable netrw at the very start of your init.lua
vim.g.loaded_netrw = 1
vim.g.loaded_netrwPlugin = 1

-- set termguicolors to enable highlight groups
vim.opt.termguicolors = true

-- empty setup using defaults

-- OR setup with some options
  sort_by = "case_sensitive",
  view = {
    width = 30,
  renderer = {
    group_empty = true,
  filters = {
    dotfiles = true,


Open the tree: :NvimTreeOpen

Show the mappings: g?

Custom Mappings

:help nvim-tree-mappings-default are applied by default however you may customise via |nvim-tree.on_attach| e.g.

local function my_on_attach(bufnr)
  local api = require "nvim-tree.api"

  local function opts(desc)
    return { desc = "nvim-tree: " .. desc, buffer = bufnr, noremap = true, silent = true, nowait = true }

  -- default mappings

  -- custom mappings
  vim.keymap.set('n', '<C-t>', api.tree.change_root_to_parent,        opts('Up'))
  vim.keymap.set('n', '?',     api.tree.toggle_help,                  opts('Help'))

-- pass to setup along with your other options
require("nvim-tree").setup {
  on_attach = my_on_attach,


See :help nvim-tree-commands

Basic commands:

:NvimTreeToggle Open or close the tree. Takes an optional path argument.

:NvimTreeFocus Open the tree if it is closed, and then focus on the tree.

:NvimTreeFindFile Move the cursor in the tree for the current buffer, opening folders if needed.

:NvimTreeCollapse Collapses the nvim-tree recursively.


nvim-tree is stable and new major features will not be added. The focus is on existing user experience.

Users are encouraged to add their own custom features via the public API.

Development is focused on:

  • Bug fixes
  • Performance
  • Quality of Life improvements
  • API / Events
  • Enhancements to existing features


nvim-tree exposes a public API. This is non breaking, with additions made as necessary. See :help nvim-tree-api

See wiki Recipes and Tips for ideas and inspiration.

Please raise a feature request if the API is insufficient for your needs. Contributions are always welcome.

You may also subscribe to events that nvim-tree will dispatch in a variety of situations, see :help nvim-tree-events


PRs are always welcome. See wiki to get started.

See bug and PR Please issues if you are looking for some work to get you started.


See Showcases wiki page for examples of user's configurations with sources.

Please add your own!