local util = require("lazyvim.util") return { -- file explorer { "nvim-neo-tree/neo-tree.nvim", cmd = "Neotree", keys = { { "ft", function() require("neo-tree.command").execute({ toggle = true, dir = require("lazyvim.util").get_root() }) end, desc = "NeoTree", }, }, init = function() vim.g.neo_tree_remove_legacy_commands = 1 end, config = { filesystem = { follow_current_file = true, hijack_netrw_behavior = "open_current", }, }, }, -- search/replace in multiple files { "windwp/nvim-spectre", keys = { { "sr", function() require("spectre").open() end, desc = "Replace in files (Spectre)", }, }, }, -- fuzzy finder { "nvim-telescope/telescope.nvim", cmd = "Telescope", keys = { { "/", util.telescope("live_grep"), desc = "Find in Files (Grep)" }, { "", util.telescope("find_files"), desc = "Find Files" }, { "fb", "Telescope buffers", desc = "Buffers" }, { "ff", util.telescope("find_files"), desc = "Find Files" }, { "fr", "Telescope oldfiles", desc = "Recent" }, { "gc", "Telescope git_commits", desc = "commits" }, { "gs", "Telescope git_status", desc = "status" }, { "ha", "Telescope autocommands", desc = "Auto Commands" }, { "hc", "Telescope commands", desc = "Commands" }, { "hf", "Telescope filetypes", desc = "File Types" }, { "hh", "Telescope help_tags", desc = "Help Pages" }, { "hk", "Telescope keymaps", desc = "Key Maps" }, { "hm", "Telescope man_pages", desc = "Man Pages" }, { "ho", "Telescope vim_options", desc = "Options" }, { "hs", "Telescope highlights", desc = "Search Highlight Groups" }, { "ht", "Telescope builtin", desc = "Telescope" }, { "sb", "Telescope current_buffer_fuzzy_find", desc = "Buffer" }, { "sc", "Telescope command_history", desc = "Command History" }, { "sg", util.telescope("live_grep"), desc = "Grep" }, { "sm", "Telescope marks", desc = "Jump to Mark" }, { ",", "Telescope buffers show_all_buffers=true", desc = "Switch Buffer" }, { ":", "Telescope command_history", desc = "Command History" }, { "ss", util.telescope("lsp_document_symbols", { symbols = { "Class", "Function", "Method", "Constructor", "Interface", "Module", "Struct", "Trait", "Field", "Property", }, }), desc = "Goto Symbol", }, }, config = true, }, -- easily jump to any location and enhanced f/t motions for Leap { "ggandor/leap.nvim", event = "VeryLazy", dependencies = { { "ggandor/flit.nvim", config = { labeled_modes = "nv" } }, }, config = function() require("leap").add_default_mappings(true) end, }, -- which-key { "folke/which-key.nvim", event = "VeryLazy", config = function() local wk = require("which-key") wk.setup({ show_help = false, plugins = { spelling = true }, key_labels = { [""] = "SPC" }, }) wk.register({ mode = { "n", "v" }, ["g"] = { name = "+goto" }, ["]"] = { name = "+next" }, ["["] = { name = "+prev" }, ["b"] = { name = "+buffer" }, ["c"] = { name = "+code" }, ["f"] = { name = "+file" }, ["g"] = { name = "+git" }, ["h"] = { name = "+help" }, ["x"] = { name = "+diagnostics" }, }) end, }, -- git signs { "lewis6991/gitsigns.nvim", event = "BufReadPre", config = { signs = { add = { text = "▎" }, change = { text = "▎" }, delete = { text = "契" }, topdelete = { text = "契" }, changedelete = { text = "▎" }, untracked = { text = "▎" }, }, }, }, -- references { "RRethy/vim-illuminate", event = "BufReadPost", config = function() require("illuminate").configure({ delay = 200 }) end, keys = { { "]]", function() require("illuminate").goto_next_reference(false) end, desc = "Next Reference", }, { "[[", function() require("illuminate").goto_prev_reference(false) end, desc = "Prev Reference", }, }, }, -- buffer remove { "echasnovski/mini.bufremove", keys = { { "bd", function() require("mini.bufremove").delete(0, false) end, desc = "Delete Buffer", }, { "bD", function() require("mini.bufremove").delete(0, true) end, desc = "Delete Buffer (Force)", }, }, }, }