-- Настройка nvim-tree require("nvim-tree").setup({ sort = { sorter = "case_sensitive", }, view = { width = 50, }, renderer = { group_empty = true, }, filters = { dotfiles = true, }, actions = { open_file = { quit_on_open = true, -- закрывать дерево при открытии файла }, }, on_attach = function(bufnr) local api = require("nvim-tree.api") -- Apply default mappings api.config.mappings.default_on_attach(bufnr) -- Remove default C-] mapping vim.keymap.del("n", "", { buffer = bufnr }) -- Define file extensions to handle with system open local special_extensions = { ".pdf", ".png", ".jpeg", ".jpg", ".doc", ".docx" } -- Helper function to check file extension local function has_special_extension(node) for _, ext in ipairs(special_extensions) do if node.name:match("%.?[^.]+$") == ext then return true end end return false end -- Create combined CR mapping vim.keymap.set("n", "", function() local node = api.tree.get_node_under_cursor() if node and has_special_extension(node) then api.node.run.system() -- Open file in system else api.node.open.edit() -- Default open file behavior api.tree.change_root_to_node() -- Change root to node end end, { buffer = bufnr }) end, }) -- Глобальные бинды для nvim-tree vim.keymap.set("n", "e", ":NvimTreeToggle", { noremap = true, silent = true }) vim.keymap.set("n", "q", ":NvimTreeFindFile", { noremap = true, silent = true })