nvim/lua/config/keymap.lua
2025-05-08 19:00:45 +02:00

240 lines
11 KiB
Lua
Executable file

-- local wk = require("which-key")
--
-- local keys = {
-- e = {
-- name = "Toggle",
-- e = {"<cmd>NeoTreeFloatToggle<CR>", "NeoTree"},
-- w = {vim.cmd.Ex, "netrw"},
-- s = {"<cmd>NeoTreeShowToggle<CR>", "neotree sidebar"},
-- g = {"<cmd>NeoTreeFloatToggle git_status<CR>", "Git Status"},
-- -- b = {"<cmd>NeoTreeFloatToggle buffers<CR>", "Buffers"},
-- c = {"<cmd>NeoTreeClose<CR>" , "Close"},
-- u = {vim.cmd.UndotreeToggle, "UndoTree"},
-- },
-- c = {
-- name = "LSP",
-- f = {function () vim.lsp.buf.format() end, "Format"},
-- w = {function () vim.lsp.buf.workspace_symbol("") end, "workspace symbol"},
-- d = {function () vim.diagnostic.open_float() end, "diagnostic"},
-- a = {function () vim.lsp.buf.code_action() end, "code actions"},
-- R = {function () vim.lsp.buf.references() end, "references"},
-- r = {function () vim.lsp.buf.rename() end, "rename"},
-- h = {function () vim.lsp.buf.hover() end, "Hover"},
-- t = {function () vim.lsp.buf.type_definition() end,"Type Definition"},
-- s = {"<cmd>Navbuddy<cr>", "Navbuddy"},
-- S = {require("telescope.builtin").lsp_document_symbols, "Document Symbols"},
-- l = {
-- name = "LSP",
-- k = {"<cmd>LspStop<cr>", "Stop"},
-- s = {"<cmd>LspStart<cr>", "Start"},
-- r = {"<cmd>LspRestart<cr>", "Restart"},
-- },
-- },
-- b = {
-- name = "Buffer",
-- h = {vim.cmd.bprevious, "Previous"},
-- l = {vim.cmd.bnext, "Next"},
-- H = {vim.cmd.bfirst, "First"},
-- L = {vim.cmd.blast, "Last"},
-- b = {require("telescope.builtin").buffers, "Picker"},
-- c = {"<cmd>:bp | sp | bn | bd<cr>", "Close"},
-- C = {"<cmd>:bp | sp | bn | bd!<cr>", "Close Force"},
-- d = {function() vim.cmd("bd") end, "Delete buffer"},
-- D = {function() vim.cmd("bd!") end, "Delete buffer Force"},
-- o = {function() vim.cmd("BDelete other") end, "Delete other buffers"},
-- m = {function() vim.cmd("BDelete select") end, "Select buffer to delete"},
-- },
-- f = {
-- name = "Telescope & fzf",
-- c = {require("telescope.builtin").colorscheme, "Find Colorscheme"},
-- d = {require("telescope.builtin").diagnostics, "Find Diagnostics"},
-- w = {require("telescope.builtin").grep_string, "Find current Word"},
-- f = {require("telescope.builtin").find_files, "telescope find files"},
-- g = {require("telescope.builtin").live_grep, "live grep"},
-- b = {require("telescope.builtin").buffers, "buffers"},
-- h = {require("telescope.builtin").help_tags, "help tags"},
-- s = {function () require("telescope.builtin").grep_string({ search = vim.fn.input("Grep > ")}); end, "grep search through files"},
-- m = {"<cmd>Maket<cr>", "Make"},
-- },
-- s = {
-- name = "Settings",
-- c = {function ()
-- vim.opt.scrolloff = 100
-- end, "Always center cursor"},
-- C = {function ()
-- vim.opt.scrolloff = 8
-- end, "Disable Cursor center"},
-- f = {function ()
-- vim.opt.nu = true
-- vim.opt.relativenumber = true
-- end, "Fix number and relative numbers"},
-- },
-- h = {
-- name = "Hop",
-- w = {"<cmd>HopWord<cr>", "Word"},
-- a = {"<cmd>HopAnywhere<cr>", "Anywhere"},
-- l = {"<cmd>HopLine<cr>", "Line"},
-- p = {"<cmd>HopPattern<cr>", "Pattern"},
-- c = {"<cmd>HopChar1<cr>", "Char1"},
-- x = {"<cmd>HopChar2<cr>", "Char2"},
-- h = {vim.cmd.HopChar2, "Hop"},
-- },
-- d = {
-- name = "Debug",
-- b = {function () require("dap").toggle_breakpoint() end, "toggle breakpoint"},
-- c = {function () require("dap").continue() end, "launch or continue execution"},
-- s = {function () require("dap").step_into() end, "step into"},
-- o = {function () require("dap").step_over() end, "step over"},
-- r = {function () require("dap").repl.open() end, "open repl"},
-- w = {"<cmd>DapUIFloat<cr>", "DapUI"},
-- },
-- w = {
-- name = "workspace",
-- a = {vim.lsp.buf.add_workspace_folder, "add folder"},
-- r = {vim.lsp.buf.remove_workspace_folder, "remove folder"},
-- l = {function() print(vim.inspect(vim.lsp.buf.list_workspace_folders())) end, "list folders"},
-- },
-- q = {
-- name = "Quick nav",
-- q = {require("harpoon.ui").toggle_quick_menu, "Menu"},
-- a = {function () require("harpoon"):list():append() end, "Add file"},
-- r = {function () require("harpoon"):list():remove() end, "Remove File"},
-- },
--
-- }
--
-- wk.register(keys, {prefix = "<leader>"})
-- wk.register(keys, {prefix = "<C-Space>"})
-- wk.register(keys, {prefix = "<C-Space>", mode = "i"})
-- wk.register(keys, {prefix = "<C-Space>", mode = "v"})
local keys = {
{ "bC", "<cmd>:bp | sp | bn | bd!<cr>", desc = "Close Force" },
{ "bD", function() vim.cmd("bd!") end, desc = "Delete buffer Force" },
{ "bH", vim.cmd.bfirst, desc = "First" },
{ "bL", vim.cmd.blast, desc = "Last" },
{ "bb", require("telescope.builtin").buffers, desc = "Picker" },
{ "bc", "<cmd>:bp | sp | bn | bd<cr>", desc = "Close" },
{ "bd", vim.cmd.bd, desc = "Delete buffer" },
{ "bh", vim.cmd.bprevious, desc = "Previous" },
{ "bl", vim.cmd.bnext, desc = "Next" },
{ "bm", function() vim.cmd("BDelete select") end, desc = "Select buffer to delete" },
{ "bo", function() vim.cmd("BDelete other") end, desc = "Delete other buffers" },
{ "cR", vim.lsp.buf.references, desc = "references" },
{ "cS", require("telescope.builtin").lsp_document_symbols, desc = "Document Symbols" },
{ "ca", vim.lsp.buf.code_action, desc = "code actions" },
{ "cd", vim.diagnostic.open_float, desc = "diagnostic" },
{ "cf", vim.lsp.buf.format, desc = "Format" },
{ "ch", vim.lsp.buf.hover, desc = "Hover" },
{ "clk", "<cmd>LspStop<cr>", desc = "Stop" },
{ "clr", "<cmd>LspRestart<cr>", desc = "Restart" },
{ "cls", "<cmd>LspStart<cr>", desc = "Start" },
{ "cr", vim.lsp.buf.rename, desc = "rename" },
{ "cs", "<cmd>Navbuddy<cr>", desc = "Navbuddy" },
{ "ct", vim.lsp.buf.type_definition, desc = "Type Definition" },
{ "cw", function() vim.lsp.buf.workspace_symbol("") end, desc = "workspace symbol" },
{ "db", require("dap").toggle_breakpoint, desc = "toggle breakpoint" },
{ "dc", require("dap").continue, desc = "launch or continue execution" },
{ "do", require("dap").step_over, desc = "step over" },
{ "dr", require("dap").repl.open, desc = "open repl" },
{ "ds", require("dap").step_into, desc = "step into" },
{ "dw", "<cmd>DapUIFloat<cr>", desc = "DapUI" },
{ "ec", "<cmd>NeoTreeClose<CR>", desc = "Close" },
{ "ee", "<cmd>NeoTreeFloatToggle<CR>", desc = "NeoTree" },
{ "eg", "<cmd>NeoTreeFloatToggle git_status<CR>", desc = "Git Status" },
{ "es", "<cmd>NeoTreeShowToggle<CR>", desc = "neotree sidebar" },
{ "eu", vim.cmd.UndotreeToggle, desc = "UndoTree" },
{ "ew", vim.cmd.Ex, desc = "netrw" },
{ "fb", require("telescope.builtin").buffers, desc = "buffers" },
{ "fc", require("telescope.builtin").colorscheme, desc = "Find Colorscheme" },
{ "fd", require("telescope.builtin").diagnostics, desc = "Find Diagnostics" },
{ "ff", require("telescope.builtin").find_files, desc = "telescope find files" },
{ "fg", require("telescope.builtin").live_grep, desc = "live grep" },
{ "fh", require("telescope.builtin").help_tags, desc = "help tags" },
{ "fm", "<cmd>Maket<cr>", desc = "Make"},
{ "fs", function () require("telescope.builtin").grep_string({ search = vim.fn.input("Grep > ")}); end, desc = "grep search through files" },
{ "fw", require("telescope.builtin").grep_string, desc = "Find current Word" },
{ "ha", "<cmd>HopAnywhere<cr>", desc = "Anywhere" },
{ "hc", "<cmd>HopChar1<cr>", desc = "Char1" },
{ "hh", vim.cmd.HopChar2, desc = "Hop" },
{ "hl", "<cmd>HopLine<cr>", desc = "Line" },
{ "hp", "<cmd>HopPattern<cr>", desc = "Pattern" },
{ "hw", "<cmd>HopWord<cr>", desc = "Word" },
{ "hx", "<cmd>HopChar2<cr>", desc = "Char2" },
{ "qa", function () require("harpoon"):list():append() end, desc = "Add file" },
{ "qq", require("harpoon.ui").toggle_quick_menu, desc = "Menu" },
{ "qr", function() require("harpoon"):list():remove() end, desc = "Remove File" },
{ "sC", function() vim.opt.scrolloff = 8 end, desc = "Disable Cursor center" },
{ "sc", function() vim.opt.scrolloff = 100 end, desc = "Always center cursor" },
{ "sf", function() vim.opt.nu = true; vim.opt.relativenumber = true end, desc = "Fix number and relative numbers" },
{ "wa", vim.lsp.buf.add_workspace_folder, desc = "add folder" },
{ "wl", function() print(vim.inspect(vim.lsp.buf.list_workspace_folders())) end, desc = "list folders" },
{ "wr", vim.lsp.buf.remove_workspace_folder, desc = "remove folder" },
}
for i, key in ipairs(keys) do
vim.keymap.set("n", "<leader>" .. key[1], key[2], {desc = key["desc"]})
vim.keymap.set("n", "<C-Space>" .. key[1], key[2], {desc = key["desc"]})
vim.keymap.set("i", "<C-Space>" .. key[1], key[2], {desc = key["desc"]})
vim.keymap.set("v", "<C-Space>" .. key[1], key[2], {desc = key["desc"]})
end
-- LSP
vim.keymap.set("n", "gd", function() vim.lsp.buf.definition() end, {desc = "goto definition"})
vim.keymap.set("n", "K", function() vim.lsp.buf.hover() end, {})
vim.keymap.set("n", "[d", function() vim.diagnostic.goto_next() end, {desc = "goto next"})
vim.keymap.set("n", "]d", function() vim.diagnostic.goto_prev() end, {desc = "goto prev"})
vim.keymap.set("i", "<C-s>", function() vim.lsp.buf.signature_help() end)
vim.keymap.set("i", "<C-h>", function () vim.lsp.buf.hover() end, {})
-- term
vim.keymap.set("n", "<C-\\>", vim.cmd.ToggleTerm)
vim.keymap.set("t", "<C-\\>", vim.cmd.ToggleTerm)
vim.keymap.set("v", "<C-\\>", vim.cmd.ToggleTerm)
-- center
vim.keymap.set("n", "<C-d>", "<C-d>zz")
vim.keymap.set("n", "<C-u>", "<C-u>zz")
vim.keymap.set("n", "n", "nzzzv")
vim.keymap.set("n", "N", "Nzzzv")
-- visual move
vim.keymap.set("x", "K", ":move '<-2<CR>gv=gv")
vim.keymap.set("x", "J", ":move '>+1<CR>gv=gv")
-- me lazy
vim.keymap.set("i", "<C-c>", "<Esc>")
-- non char keybinds
vim.keymap.set("n", "<leader>f/", function ()
require("telescope.builtin").current_buffer_fuzzy_find(require("telescope.themes").get_dropdown {
winblend = 10,
previewer = false,
})
end, {desc = "fuzzy find"})
vim.keymap.set('n', '<leader>f?', require('telescope.builtin').oldfiles, { desc = 'Find recently opened files' })
vim.keymap.set("i", "<C-Space>f/", function ()
require("telescope.builtin").current_buffer_fuzzy_find(require("telescope.themes").get_dropdown {
winblend = 10,
previewer = false,
})
end, {desc = "fuzzy find"})
vim.keymap.set('i', '<C-Space>f?', require('telescope.builtin').oldfiles, { desc = 'Find recently opened files' })
for i = 9, 1, -1 do
vim.keymap.set("n", "<M-" .. i .. ">", function() require("harpoon"):list():select(i) end, {desc = ""})
vim.keymap.set("i", "<M-" .. i .. ">", function() require("harpoon"):list():select(i) end, {desc = ""})
vim.keymap.set("v", "<M-" .. i .. ">", function() require("harpoon"):list():select(i) end, {desc = ""})
end