return { { "vifm/vifm.vim", config = function() vim.g.loaded_netrw = 1 vim.g.loaded_netrwPlugin = 1 vim.g.vifm_replace_netrw = 1 vim.g.vifm_exec_args = '-c "set vifminfo=" -c "set statusline=" -c "only"' end, cmd = "Vifm", keys = { { "E", "Vifm", desc = "buffer file browser" }, { "vc", ":Vifm " .. vim.fn.stdpath("config") .. "", desc = "open config" }, }, event = { "BufEnter" }, }, -- integrate file manager { "nvim-neo-tree/neo-tree.nvim", dependencies = { "MunifTanjim/nui.nvim", "nvim-lua/plenary.nvim", { "nvim-tree/nvim-web-devicons", optional = true }, }, cmd = "Neotree", opts = { source_selector = { winbar = true }, }, keys = { { "se", "Neotree toggle left", desc = "filetree", silent = true }, }, lazy = false }, { "MagicDuck/grug-far.nvim", lazy = false, opts = {} }, -- fuzzy matching picker { "nvim-telescope/telescope.nvim", dependencies = { "nvim-lua/popup.nvim", "nvim-lua/plenary.nvim", { "nvim-telescope/telescope-fzf-native.nvim", build = "make" }, }, cmd = "Telescope", config = function() if require("core.util").is_available("which-key") then require("which-key").add({ "f", group = "find" }) end -- Setup up telescope fuzzy finding settings -- -- Makes use of optionally installed external programs to work fully: -- rg (ripgrep) for in-text searches -- fd for quicker directory structure searches -- lsp for a variety of lsp queries local trouble_mappings = {} if require("core.util").is_available("trouble") then trouble_mappings = { i = { [""] = require("trouble.sources.telescope").open }, n = { [""] = require("trouble.sources.telescope").open }, } end require("telescope").setup({ defaults = { vimgrep_arguments = { "rg", "--ignore-vcs", "--hidden", "--color=never", "--no-heading", "--with-filename", "--line-number", "--column", "--smart-case", }, generic_sorter = require("mini.fuzzy").get_telescope_sorter, -- Appearance prompt_prefix = "󰍉 ", selection_caret = "󰳟 ", color_devicons = true, mappings = trouble_mappings or {}, }, pickers = { buffers = { theme = "ivy" }, oldfiles = { theme = "ivy" }, find_files = { theme = "dropdown", -- nice minimal picker design borderchars = { { "─", "│", "─", "│", "┌", "┐", "┘", "└" }, prompt = { "─", "│", " ", "│", "┌", "┐", "│", "│" }, results = { "─", "│", "─", "│", "├", "┤", "┘", "└" }, preview = { "─", "│", "─", "│", "┌", "┐", "┘", "└" }, }, width = 0.8, previewer = false, prompt_title = false, }, }, }) require("telescope").load_extension("fzf") end, keys = { { "vh", function() require("telescope.builtin").help_tags() end, desc = "help tags", }, { "vH", function() require("telescope.builtin").man_pages() end, desc = "man pages", }, { "vC", function() require("telescope.builtin").colorscheme(require("telescope.themes").get_ivy()) end, desc = "colorschemes", }, { "fb", function() require("telescope.builtin").buffers(require("telescope.themes").get_ivy()) end, desc = "list buffers", }, { "fo", function() require("telescope.builtin").oldfiles(require("telescope.themes").get_ivy()) end, desc = "list old files", }, { "ff", function() require("telescope.builtin").find_files() end, desc = "find files", }, { "fh", function() require("telescope.builtin").find_files({ hidden = true }) end, desc = "find hidden files", }, { "fw", function() require("telescope.builtin").live_grep() end, desc = "grep search", }, { "fg", function() require("telescope.builtin").git_status() end, desc = "git status", }, { "fc", function() require("telescope.builtin").git_bcommits() end, desc = "git buffer commits", }, { "fl", function() require("telescope.builtin").git_commits() end, desc = "git commit log", }, { "z=", function() require("telescope.builtin").spell_suggest(require("telescope.themes").get_ivy()) end, desc = "spell suggest", }, }, }, { "jiaoshijie/undotree", dependencies = { "nvim-lua/plenary.nvim", }, config = true, keys = { { "su", function() require("undotree").toggle() end, desc = "toggle undotree", silent = true, }, }, }, }