Home
Head's Up: I'm in the middle of upgrading my site. Most things are in place, but there are something missing and/or broken including image alt text. Please bear with me while I'm getting things fixed.

My Neovim NvimTree Config

~/.config/nvim/after/plugin/nvim-tree-config.lua

lua
-- Function to set up key mappings 

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 }
    end
    vim.keymap.set('n', '<CR>',    api.node.open.edit,                  opts('Open'))
    vim.keymap.set('n', '<Tab>',   api.node.open.preview,               opts('Open Preview'))
    vim.keymap.set('n', '<C-v>',   api.node.open.vertical,              opts('Open: Vertical Split'))
    vim.keymap.set('n', '<C-x>',   api.node.open.horizontal,            opts('Open: Horizontal Split'))
    vim.keymap.set('n', 'a',       api.fs.create,                       opts('Create File Or Directory'))
    vim.keymap.set('n', 'c',       api.fs.copy.node,                    opts('Copy'))
    vim.keymap.set('n', 'g',       api.tree.change_root_to_node,        opts('CD'))
    vim.keymap.set('n', 'i',       api.node.show_info_popup,            opts('Info'))
    vim.keymap.set('n', 'm',       api.marks.toggle,                    opts('Toggle Bookmark'))
    vim.keymap.set('n', 'p',       api.fs.paste,                        opts('Paste'))
    vim.keymap.set('n', 'P',       api.node.navigate.parent,            opts('Parent Directory'))
    vim.keymap.set('n', 'r',       api.fs.rename,                       opts('Rename'))
    vim.keymap.set('n', 't',       api.marks.bulk.trash,                opts('Trash Bookmarked'))
    vim.keymap.set('n', 'x',       api.fs.cut,                          opts('Cut'))
    vim.keymap.set('n', '<2-LeftMouse>',  api.node.open.edit,           opts('Open'))
end


-- Call function to set up key mappings
-- and turn off git icons

require("nvim-tree").setup({
  on_attach = my_on_attach,
  view = {
    side = "right"
  },
  renderer = {
    icons = {
      show = {
        git = false
      }
    }
  }
})


-- Automatcially open nvim-tree on startup 
-- then switch to main buffer

local function open_nvim_tree()
  require("nvim-tree.api").tree.open()
  vim.cmd.wincmd 'p'
end

vim.api.nvim_create_autocmd({ "VimEnter" }, { callback = open_nvim_tree })


-- Set up to toggle back and forth to nvim-tree
-- and the current buffer
local function toggle_nvimtree()
  if vim.fn.bufname():match 'NvimTree_' then
    vim.cmd.wincmd 'p'
  else
    vim.cmd('NvimTreeOpen')
  end
end

-- Toggle to File Explorer Key Mapping
vim.keymap.set('n', '<M-E>',  toggle_nvimtree, {})

-- Save and close a buffer ending up on the previous
-- buffer or in a new buffer
vim.keymap.set('n', '<M-W>', ":w<bar>:bp<bar>sp<bar>bn<bar>bd<cr>", { desc = 'Close buffer' })
vim.keymap.set('i', '<M-W>', "<ESC>:w<bar>:bp<bar>sp<bar>bn<bar>bd<cr>", { desc = 'Close buffer' })


-- Save and quit out of neovim including closing 
-- nvim-tree
vim.keymap.set('n', '<M-Q>', ":wqa<cr>:bd<cr>", { desc = 'Save and quit' })
vim.keymap.set('i', '<M-Q>', "<ESC>:wqa<cr>:bd<cr>", { desc = 'Save and quit' })

- Help via : [TODO: Code shorthand span ]

- This set up turns off the git icons in the tree. I find them more distracting that useful

Default Key Mappings

These are the default key mappings you can pull it for easy reference :

code full

Footnotes And References

  • This is where I got the toggle function from