return { "nvim-neo-tree/neo-tree.nvim", branch = "v3.x", dependencies = { "nvim-lua/plenary.nvim", "nvim-tree/nvim-web-devicons", -- not strictly required, but recommended "MunifTanjim/nui.nvim", -- "3rd/image.nvim", -- Optional image support in preview window: See `# Preview Mode` for more information }, config = function() require("neo-tree").setup({ close_if_last_window = true, window = { mappings = { ["l"] = "open", ["h"] = "close_node", [""] = "none", ["Y"] = { function(state) local node = state.tree:get_node() local path = node:get_id() vim.fn.setreg("+", path, "c") end, desc = "Copy Path to Clipboard", }, ["O"] = { function(state) require("lazy.util").open(state.tree:get_node().path, { system = true }) end, desc = "Open with System Application", }, ["P"] = { "toggle_preview", config = { use_float = false } }, }, }, event_handlers = { { event = "file_open_requested", handler = function() -- auto close -- vim.cmd("Neotree close") -- OR require("neo-tree.command").execute({ action = "close" }) end }, }, -- set keymaps }) local keymap = vim.keymap -- for conciseness keymap.set("n", "ee", "Neotree toggle", { desc = "Toggle file explorer" }) -- toggle file explorer keymap.set("n", "ef", "Neotree focus", { desc = "focus on file explorer" }) -- toggle file explorer on current file end, }