164 lines
7.8 KiB
Lua
164 lines
7.8 KiB
Lua
-- дерево файлов
|
|
return {
|
|
"nvim-tree/nvim-tree.lua",
|
|
config = function()
|
|
local nvim_tree = require"nvim-tree"
|
|
|
|
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
|
|
|
|
vim.keymap.set('n', "<C-]>", api.tree.change_root_to_node, opts("CD"))
|
|
vim.keymap.set('n', "<C-e>", api.node.open.replace_tree_buffer, opts("Open: In Place"))
|
|
vim.keymap.set('n', "<C-k>", api.node.show_info_popup, opts("Info"))
|
|
vim.keymap.set('n', "<C-r>", api.fs.rename_sub, opts("Rename: Omit Filename"))
|
|
vim.keymap.set('n', "<C-t>", api.node.open.tab, opts("Open: New Tab"))
|
|
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', "<BS>", api.node.navigate.parent_close, opts("Close Directory"))
|
|
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', '>', api.node.navigate.sibling.next, opts("Next Sibling"))
|
|
vim.keymap.set('n', '<', api.node.navigate.sibling.prev, opts("Previous Sibling"))
|
|
vim.keymap.set('n', '.', api.node.run.cmd, opts("Run Command"))
|
|
vim.keymap.set('n', '-', api.tree.change_root_to_parent, opts("Up"))
|
|
vim.keymap.set('n', 'a', api.fs.create, opts("Create"))
|
|
vim.keymap.set('n', "bmv", api.marks.bulk.move, opts("Move Bookmarked"))
|
|
vim.keymap.set('n', 'B', api.tree.toggle_no_buffer_filter, opts("Toggle No Buffer"))
|
|
vim.keymap.set('n', 'c', api.fs.copy.node, opts("Copy"))
|
|
vim.keymap.set('n', 'C', api.tree.toggle_git_clean_filter, opts("Toggle Git Clean"))
|
|
vim.keymap.set('n', "[c", api.node.navigate.git.prev, opts("Prev Git"))
|
|
vim.keymap.set('n', "]c", api.node.navigate.git.next, opts("Next Git"))
|
|
vim.keymap.set('n', 'd', api.fs.trash, opts("Trash"))
|
|
vim.keymap.set('n', 'D', api.fs.remove, opts("Delete"))
|
|
vim.keymap.set('n', 'E', api.tree.expand_all, opts("Expand All"))
|
|
vim.keymap.set('n', 'e', api.fs.rename_basename, opts("Rename: Basename"))
|
|
vim.keymap.set('n', "]e", api.node.navigate.diagnostics.next, opts("Next Diagnostic"))
|
|
vim.keymap.set('n', "[e", api.node.navigate.diagnostics.prev, opts("Prev Diagnostic"))
|
|
vim.keymap.set('n', 'F', api.live_filter.clear, opts("Clean Filter"))
|
|
vim.keymap.set('n', 'f', api.live_filter.start, opts("Filter"))
|
|
vim.keymap.set('n', "g?", api.tree.toggle_help, opts("Help"))
|
|
vim.keymap.set('n', "gy", api.fs.copy.absolute_path, opts("Copy Absolute Path"))
|
|
vim.keymap.set('n', 'H', api.tree.toggle_hidden_filter, opts("Toggle Dotfiles"))
|
|
vim.keymap.set('n', 'I', api.tree.toggle_gitignore_filter, opts("Toggle Git Ignore"))
|
|
vim.keymap.set('n', 'J', api.node.navigate.sibling.last, opts("Last Sibling"))
|
|
vim.keymap.set('n', 'K', api.node.navigate.sibling.first, opts("First Sibling"))
|
|
vim.keymap.set('n', 'm', api.marks.toggle, opts("Toggle Bookmark"))
|
|
vim.keymap.set('n', 'o', api.node.open.edit, opts("Open"))
|
|
vim.keymap.set('n', 'O', api.node.open.no_window_picker, opts("Open: No Window Picker"))
|
|
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', 'q', api.tree.close, opts("Close"))
|
|
vim.keymap.set('n', 'r', api.fs.rename, opts("Rename"))
|
|
vim.keymap.set('n', 'R', api.tree.reload, opts("Refresh"))
|
|
vim.keymap.set('n', 's', api.node.run.system, opts("Run System"))
|
|
vim.keymap.set('n', 'S', api.tree.search_node, opts("Search"))
|
|
vim.keymap.set('n', 'U', api.tree.toggle_custom_filter, opts("Toggle Hidden"))
|
|
vim.keymap.set('n', 'W', api.tree.collapse_all, opts("Collapse"))
|
|
vim.keymap.set('n', 'x', api.fs.cut, opts("Cut"))
|
|
vim.keymap.set('n', 'y', api.fs.copy.filename, opts("Copy Name"))
|
|
vim.keymap.set('n', 'Y', api.fs.copy.relative_path, opts("Copy Relative Path"))
|
|
vim.keymap.set('n', "<2-LeftMouse>", api.node.open.edit, opts("Open"))
|
|
vim.keymap.set('n', "<2-RightMouse>", api.tree.change_root_to_node, opts("CD"))
|
|
-- END_DEFAULT_ON_ATTACH
|
|
|
|
-- Mappings migrated from view.mappings.list
|
|
vim.keymap.set('n', 'l', api.node.open.edit, opts("Open"))
|
|
vim.keymap.set('n', "<CR>", api.node.open.edit, opts("Open"))
|
|
vim.keymap.set('n', 'o', api.node.open.edit, opts("Open"))
|
|
vim.keymap.set('n', 'h', api.node.navigate.parent_close, opts("Close Directory"))
|
|
vim.keymap.set('n', 'v', api.node.open.vertical, opts("Open: Vertical Split"))
|
|
vim.keymap.set('n', 'D', api.fs.remove, opts("Delete"))
|
|
vim.keymap.set('n', 'd', api.fs.trash, opts("Trash"))
|
|
end
|
|
|
|
nvim_tree.setup({
|
|
on_attach = on_attach,
|
|
disable_netrw = true,
|
|
hijack_netrw = true,
|
|
open_on_tab = false,
|
|
hijack_cursor = false,
|
|
update_cwd = true,
|
|
diagnostics = {
|
|
enable = true,
|
|
icons = {
|
|
hint = "",
|
|
info = "",
|
|
warning = "",
|
|
error = ""
|
|
}
|
|
},
|
|
update_focused_file = {
|
|
enable = true,
|
|
update_cwd = true,
|
|
ignore_list = {},
|
|
update_root = false
|
|
},
|
|
system_open = {
|
|
cmd = nil,
|
|
args = {}
|
|
},
|
|
git = {
|
|
enable = true,
|
|
ignore = true,
|
|
timeout = 200
|
|
},
|
|
filters = {
|
|
dotfiles = false,
|
|
custom = { "node_modules", ".cache" }
|
|
},
|
|
hijack_unnamed_buffer_when_opening = false,
|
|
renderer = {
|
|
icons = {
|
|
glyphs = {
|
|
default = "",
|
|
symlink = "",
|
|
git = {
|
|
unstaged = "",
|
|
staged = "S",
|
|
unmerged = "",
|
|
renamed = "➜",
|
|
deleted = "",
|
|
untracked = "U",
|
|
ignored = "◌",
|
|
},
|
|
folder = {
|
|
default = "",
|
|
open = "",
|
|
empty = "",
|
|
empty_open = "",
|
|
--symlink = "",
|
|
symlink = "",
|
|
symlink_open = ""
|
|
}
|
|
}
|
|
}
|
|
},
|
|
view = {
|
|
-- hide_root_folder = false,
|
|
side = "left",
|
|
width = 40,
|
|
-- mappings = {
|
|
-- custom_only = false,
|
|
-- list = {
|
|
-- { key = { "l", "<CR>", "o" }, cb = tree_cb "edit" },
|
|
-- { key = "h", cb = tree_cb "close_node" },
|
|
-- { key = "v", cb = tree_cb "vsplit" },
|
|
-- { key = "D", action = "remove" },
|
|
-- { key = "d", action = "trash" }
|
|
-- }
|
|
-- },
|
|
number = false,
|
|
relativenumber = false
|
|
},
|
|
trash = {
|
|
cmd = "delete",
|
|
require_confirm = true
|
|
}
|
|
})
|
|
end
|
|
}
|