191 lines
9.4 KiB
Lua
191 lines
9.4 KiB
Lua
-- This is a function called from the which-key plugin config
|
|
return function ()
|
|
local keymap = vim.keymap
|
|
local wk = require("which-key")
|
|
-- { "<leader>", "command", desc="decription", mode="n" }, -- single command example
|
|
|
|
wk.add({
|
|
-- Miscellaneous
|
|
{ "ii", "<ESC>", desc="Exit insert mode with ii", mode="i" },
|
|
{ "<leader><space>", "<cmd>nohl<cr>", desc="Clear search highlights", mode="n" },
|
|
{ "<leader>n", "o<esc>", desc="Add new line", mode="n" },
|
|
{ "<leader>N", "O<esc>", desc="Add new line above", mode="n" },
|
|
{ "<leader>+", "<C-a>", desc="Increment number by 1", mode="n" },
|
|
{ "<leader>-", "<C-x>", desc="Decrement number by 1", mode="n" },
|
|
-- Miscellaneous
|
|
|
|
{ -- File saves and exits
|
|
mode = { "n", "v" },
|
|
{ "<leader>f", group="Saves and exits" },
|
|
{ "<leader>fw", "<cmd>w!<cr>", desc = "Save current file"},
|
|
{"<leader>fW", "<cmd>wa!<cr>", desc = "Save all files"},
|
|
{"<leader>fq", "<cmd>wq!<cr>", desc = "Save and exit current file"},
|
|
{"<leader>fQ", "<cmd>wqa!<cr>", desc = "Save and exit all files"},
|
|
{"<leader>fx", "<cmd>q!<cr>", desc = "Exit file without saving"},
|
|
{"<leader>fX", "<cmd>q!<cr>", desc = "Exit session without saving"},
|
|
},
|
|
|
|
{ -- Window management
|
|
mode = {"n"},
|
|
{ "<leader>w", group="Window management" },
|
|
{ "<leader>wv", "<C-w>v", desc="Split window vertically" },
|
|
{ "<leader>wh", "<C-w>s", desc="Split window horizontally" },
|
|
{ "<leader>we", "<C-w>=", desc="Make splits equal size" },
|
|
{ "<leader>wx", "<cmd>close<cr>", desc="Close current split" },
|
|
{ "<leader>wt", "<C-w>+", desc="Make split taller" },
|
|
{ "<leader>ws", "<C-w>-", desc="Make split shorter" },
|
|
{ "<leader>wn", "<C-w><", desc="Decrease split width" },
|
|
{ "<leader>ww", "<C-w>>", desc="Increase split width" },
|
|
{ "<leader>w<left>", "<C-w><left>", desc="Move to left split" },
|
|
{ "<leader>w<up>", "<C-w><up>", desc="Move to top split" },
|
|
{ "<leader>w<down>", "<C-w><down>", desc="Move to bottom split" },
|
|
{ "<leader>w<right>", "<C-w><right>", desc="Move to right split" },
|
|
{ "<leader>wm", "<cmd>MaximizerToggle<cr>", desc="Maximize/minimize window" },
|
|
{ "<leader>wR", "<cmd>SessionRestore<cr>", desc="Restore session" },
|
|
{ "<leader>wS", "<cmd>SessionSave<cr>", desc="Save session" },
|
|
},
|
|
|
|
{ -- Tab management
|
|
mode = {"n"},
|
|
{ "<leader>t", group="Tab management" },
|
|
{ "<leader>to", "<cmd>tabnew<cr>", desc="Open new tab" },
|
|
{ "<leader>tx", "<cmd>tabclose<cr>", desc="Close current tab" },
|
|
{ "<leader>tn", "<cmd>tabn<cr>", desc="Go to next tab" },
|
|
{ "<leader>tp", "<cmd>tabp<cr>", desc="Go to prev tab" },
|
|
{ "<leader>tb", "<cmd>tabnew %<cr>", desc="Open currtent buffer in new tab" },
|
|
},
|
|
|
|
{ -- Quickfix
|
|
mode = {"n"},
|
|
{ "<leader>q", group="Quickfix" },
|
|
{ "<leader>qo", "<cmd>copen<cr>", desc="Open quickfix list" },
|
|
{ "<leader>qf", "<cmd>cfirst<cr>", desc="Jump to first quickfix list item" },
|
|
{ "<leader>qn", "<cmd>cnext<cr>", desc="Jump to next quickfix list item" },
|
|
{ "<leader>qp", "<cmd>cprev<cr>", desc="Jump to prev quickfix list item" },
|
|
{ "<leader>ql", "<cmd>clast<cr>", desc="Jump to last quickfix list item" },
|
|
{ "<leader>qc", "<cmd>cclose<cr>", desc="Close quickfix list" },
|
|
},
|
|
|
|
{ -- Neotree
|
|
mode = {"n"},
|
|
{ "<leader>e", group="File tree" },
|
|
{ "<leader>ee", "<cmd>Neotree toggle filesystem reveal left<cr>", desc="Toggle file tree" },
|
|
{ "<leader>ef", "<cmd>Neotree focus<cr>", desc="Focus to file tree" },
|
|
},
|
|
|
|
{ -- Telescope
|
|
mode = {"n"},
|
|
{ "<leader>s", group="Search" },
|
|
{ "<leader>sf", "<cmd>Telescope find_files<cr>", desc="Search files" },
|
|
{ "<leader>sg", "<cmd>Telescope live_grep<cr>", desc="Search word (livegrep)" },
|
|
{ "<leader>sb", "<cmd>Telescope buffers<cr>", desc="Search buffers" },
|
|
{ "<leader>sh", "<cmd>Telescope help_tags<cr>", desc="Search help" },
|
|
{ "<leader>sk", "<cmd>Telescope keymaps<cr>", desc="Search keymaps" },
|
|
{ "<leader>sw", "<cmd>Telescope current_buffer_fuzzy_find<cr>", desc="Fuzzy search current buffer" },
|
|
{ "<leader>ss", "<cmd>Telescope lsp_document_symbols<cr>", desc="Search LSP symbols (current buffer)" },
|
|
{ "<leader>sp", "<cmd>Telescope builtin<cr>", desc="Select a telescope picker and run it" },
|
|
{ "<leader>st", function ()
|
|
require("telescope.builtin").treesitter({ default_text = "" })
|
|
end, desc="Telescope treesitter" },
|
|
{ "<leader>C", "<cmd>Telescope colorscheme<cr>", desc="Change colorscheme" },
|
|
},
|
|
|
|
{ -- Language server
|
|
mode = {"n"},
|
|
{ "<leader>c", group="LSP & Code actions"},
|
|
{ "<leader>cc", "<cmd>lua vim.lsp.buf.completion()<cr>", desc="Toggle LSP completion" },
|
|
{ "<leader>ch", "<cmd>lua vim.lsp.buf.hover()<cr>", desc="Toggle LSP hover (documentation)" },
|
|
{ "<leader>cd", "<cmd>lua vim.lsp.buf.definition()<cr>", desc="Go to definition" },
|
|
{ "<leader>cD", "<cmd>lua vim.lsp.buf.declaration()<cr>", desc="Go to declaration" },
|
|
{ "<leader>ci", "<cmd>Telescope lsp_implementations<cr>", desc="Show LSP implementations" },
|
|
{ "<leader>ct", "<cmd>Telescope lsp_type_definitions<cr>", desc="Show LSP type definitions" },
|
|
{ "<leader>cy", "<cmd>AerialToggle<cr>", desc="Toggle aerial symbols list" },
|
|
{ "<leader>cR", "<cmd>Telescope lsp_references<cr>", desc="List all references of symbol" },
|
|
{ "<leader>cs", "<cmd>lua vim.lsp.buf.signature_help()<cr>", desc="Display signature info under cursor" },
|
|
{ "<leader>cr", "<cmd>lua vim.lsp.buf.rename()<cr>", desc="Rename" },
|
|
{ "<leader>cf", "<cmd>lua vim.lsp.buf.format()<cr>", desc="Format current buffer" },
|
|
{ "<leader>cl", function () require("lint").try_lint() end, desc="Trigger linting for current buffer" },
|
|
{ "<leader>ca", "<cmd>lua vim.lsp.buf.code_action()<cr>", desc="Code actions" },
|
|
{ "<leader>cL", "<cmd>LspRestart<cr>", desc="Restart LSP" },
|
|
},
|
|
|
|
{ -- Diagnostics
|
|
mode = {"n"},
|
|
{ "<leader>d", group="Diagnostics" },
|
|
{ "<leader>dD", "<cmd>Telescope diagnostics bufnr=0<cr>", desc="Show buffer diagnostics" },
|
|
{ "<leader>dd", "<cmd>lua vim.diagnostic.open_float()<cr>", desc="Show diagnostics in floating window" },
|
|
{ "<leader>dn", "<cmd>lua vim.diagnostic.goto_next()<cr>", desc="Go to next diagnostic" },
|
|
{ "<leader>dp", "<cmd>lua vim.diagnostic.goto_prev()<cr>", desc="Go to prev diagnostic" },
|
|
},
|
|
|
|
{ -- Database
|
|
mode = {"n"},
|
|
{ "<leader>D", group="Dadbod SQL database"},
|
|
{ "<leader>Db", "<cmd>DBUIToggle<cr>", desc="Toggle dadbod UI"},
|
|
{ "<leader>Da", "<cmd>DBUIAddConnection<cr>", desc="Add new database connection"},
|
|
},
|
|
|
|
{ --Bufferline
|
|
mode = {"n"},
|
|
{ "<leader>b", group="Buffer" },
|
|
{ "<leader>bp", "<Cmd>BufferLineTogglePin<CR>", desc = "Toggle Pin" },
|
|
{ "<leader>bP", "<Cmd>BufferLineGroupClose ungrouped<CR>", desc = "Delete Non-Pinned Buffers" },
|
|
{ "<leader>bo", "<Cmd>BufferLineCloseOthers<CR>", desc = "Delete Other Buffers" },
|
|
{ "<leader>br", "<Cmd>BufferLineCloseRight<CR>", desc = "Delete Buffers to the Right" },
|
|
{ "<leader>bl", "<Cmd>BufferLineCloseLeft<CR>", desc = "Delete Buffers to the Left" },
|
|
{ "<S-h>", "<cmd>BufferLineCyclePrev<cr>", desc = "Prev Buffer" },
|
|
{ "<S-l>", "<cmd>BufferLineCycleNext<cr>", desc = "Next Buffer" },
|
|
{ "<leader>b<left>", "<cmd>BufferLineCyclePrev<cr>", desc = "Prev Buffer" },
|
|
{ "<leader>b<right>", "<cmd>BufferLineCycleNext<cr>", desc = "Next Buffer" },
|
|
},
|
|
|
|
{ -- TODO comments
|
|
mode = {"n"},
|
|
{ "<leader>t", group="TODO" },
|
|
{ "<leader>tt", "<Cmd>TodoTelescope<CR>", desc = "Show todos" },
|
|
{ "<leader>tn", function() require("todo-comments").jump_next() end, desc="Next todo comment" },
|
|
{ "<leader>tp", function() require("todo-comments").jump_prev() end, desc="Previous todo comment" },
|
|
},
|
|
|
|
{ -- Trouble
|
|
{ "<leader>x", group="Trouble" },
|
|
{ "<leader>xx", "<cmd>Trouble diagnostics toggle<CR>", desc = "Open/close trouble list" },
|
|
{ "<leader>xL", "<cmd>Trouble loclist toggle<CR>", desc = "Open trouble location list diagnostics" },
|
|
{
|
|
"<leader>xd",
|
|
"<cmd>Trouble diagnostics toggle filter.buf=0<CR>",
|
|
desc = "Open trouble document diagnostics",
|
|
},
|
|
{ "<leader>xq", "<cmd>Trouble qflist toggle<CR>", desc = "Open trouble quickfix list" },
|
|
{
|
|
"<leader>xl",
|
|
"<cmd>Trouble lsp toggle focus=false win.position=right<CR>",
|
|
desc = "LSP Definitions / references (Trouble)",
|
|
},
|
|
{ "<leader>xt", "<cmd>TodoTrouble<CR>", desc = "Open todos in trouble" },
|
|
},
|
|
|
|
{ -- Flutter
|
|
mode = {"n"},
|
|
{ "<leader>F", group="Flutter" },
|
|
{ "<leader>Ff", "<cmd>Telescope flutter commands<cr>", desc="Show flutter commands" },
|
|
{ "<leader>Fo", "<cmd>FlutterOutlineToggle<cr>", desc="Show flutter outline" },
|
|
{ "<leader>Fd", "<cmd>FlutterDevices<cr>", desc="Show devices" },
|
|
{ "<leader>Fe", "<cmd>FlutterEmulators<cr>", desc="Show emulators" },
|
|
{ "<leader>Fq", "<cmd>FlutterQuit<cr>", desc="Quit flutter" },
|
|
{ "<leader>Fr", "<cmd>FlutterReload<cr>", desc="Hot reload" },
|
|
{ "<leader>FR", "<cmd>FlutterRestart<cr>", desc="Hot restart" },
|
|
{ "<leader>Fg", "<cmd>FlutterPubGet<cr>", desc="Pub get" },
|
|
{ "<leader>Fc", "<cmd>FlutterLogClear<cr>", desc="Clear logs" },
|
|
{ "<leader>FF", "<cmd>FlutterRun<cr>", desc="Flutter run!" },
|
|
},
|
|
})
|
|
-- Substitute
|
|
local substitute = require("substitute")
|
|
vim.keymap.set("n", "s", substitute.operator, { desc = "Substitute with motion" })
|
|
vim.keymap.set("n", "ss", substitute.line, { desc = "Substitute line" })
|
|
vim.keymap.set("n", "S", substitute.eol, { desc = "Substitute to end of line" })
|
|
vim.keymap.set("x", "s", substitute.visual, { desc = "Substitute in visual mode" })
|
|
end
|
|
|