{pkgs, ...}: { vim = { autopairs.nvim-autopairs.enable = true; comments.comment-nvim.enable = true; extraPlugins = with pkgs.vimPlugins; { flash-nvim = { package = flash-nvim; setup = ''require("flash").setup({})''; }; trouble-nvim = { package = trouble-nvim; setup = ''require("trouble").setup({})''; }; inc-rename-nvim = { package = inc-rename-nvim; setup = ''require("inc_rename").setup({})''; }; dressing-nvim = { package = dressing-nvim; }; }; keymaps = [ # Flash {key = "s"; mode = ["n" "x" "o"]; lua = true; action = ''function() require("flash").jump() end''; desc = "Flash";} {key = "S"; mode = ["n" "x" "o"]; lua = true; action = ''function() require("flash").treesitter() end''; desc = "Flash Treesitter";} {key = "R"; mode = ["o" "x"]; lua = true; action = ''function() require("flash").treesitter_search() end''; desc = "Treesitter Search";} # Trouble {key = "lD"; mode = ["n"]; lua = true; action = ''function() require("trouble").open({mode = "diagnostics"}) end''; desc = "Workspace Diagnostics";} {key = "ld"; mode = ["n"]; lua = true; action = ''function() require("trouble").open({mode = "diagnostics", filter = {buf = 0}}) end''; desc = "Document Diagnostics";} {key = "lx"; mode = ["n"]; lua = true; action = ''function() require("trouble").open({mode = "lsp_definitions"}) end''; desc = "Lsp Definitions";} {key = "lt"; mode = ["n"]; lua = true; action = ''function() require("trouble").open({mode = "lsp_type_definitions"}) end''; desc = "Lsp Type Definitions";} {key = "li"; mode = ["n"]; lua = true; action = ''function() require("trouble").open({mode = "lsp_implementations"}) end''; desc = "Lsp Implementations";} {key = "lr"; mode = ["n"]; lua = true; action = ''function() require("trouble").open({mode = "lsp_references"}) end''; desc = "Lsp References";} # Inc-rename (expr = true to build the command string dynamically) {key = "ln"; mode = ["n"]; lua = true; expr = true; action = ''function() return ":IncRename " .. vim.fn.expand("") end''; desc = "LSP Rename";} ]; }; }