local setup, nvimtree = pcall(require, "nvim-tree") if not setup then return end -- Clear existing highlight groups before setting new ones vim.cmd([[ augroup NvimTreeHighlight autocmd! highlight clear NvimTreeIndentMarker highlight NvimTreeIndentMarker guifg=#47c8ff augroup END ]]) nvimtree.setup({ view = { side = "right", -- Set nvim-tree to the left side width = 30, }, renderer = { icons = { glyphs = { folder = { arrow_closed = "➤", -- arrow when folder is closed arrow_open = "▼", -- arrow when folder is open }, }, }, }, actions = { open_file = { window_picker = { enable = false, }, }, }, diagnostics = { enable = true, show_on_dirs = false, }, }) -- Add keymaps after setup local function 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 -- Default mappings vim.keymap.set("n", "", api.node.open.edit, opts("Open")) vim.keymap.set("n", "o", api.node.open.edit, opts("Open")) vim.keymap.set("n", "", api.tree.change_root_to_node, opts("CD")) vim.keymap.set("n", "", api.node.open.vertical, opts("Open: Vertical Split")) vim.keymap.set("n", "", api.node.open.horizontal, opts("Open: Horizontal Split")) vim.keymap.set("n", "", api.node.open.tab, opts("Open: New Tab")) vim.keymap.set("n", "<", api.node.navigate.sibling.prev, opts("Previous Sibling")) vim.keymap.set("n", ">", api.node.navigate.sibling.next, opts("Next Sibling")) vim.keymap.set("n", "P", api.node.navigate.parent, opts("Parent Directory")) vim.keymap.set("n", "", api.node.navigate.parent_close, opts("Close Directory")) vim.keymap.set("n", "K", api.node.navigate.sibling.first, opts("First Sibling")) vim.keymap.set("n", "J", api.node.navigate.sibling.last, opts("Last Sibling")) vim.keymap.set("n", "r", api.fs.rename, opts("Rename")) vim.keymap.set("n", "R", api.tree.reload, opts("Refresh")) end -- Attach the keymaps vim.api.nvim_create_autocmd("FileType", { pattern = "NvimTree", callback = function(ev) on_attach(ev.buf) end, }) -- Auto open nvim-tree when opening a directory local function open_nvim_tree(data) -- buffer is a directory local directory = vim.fn.isdirectory(data.file) == 1 if not directory then return end -- change to the directory vim.cmd.cd(data.file) -- open the tree require("nvim-tree.api").tree.open() end -- Load NvimTree on Startup -- vim.api.nvim_create_autocmd({ "VimEnter" }, { callback = open_nvim_tree }) -- Add convenient keymap for toggling nvim-tree vim.keymap.set("n", "e", ":NvimTreeToggle", { noremap = true, silent = true })