From 7f1416d7c6774e10b529ec3604b5d67fbd7c583f Mon Sep 17 00:00:00 2001 From: admin Date: Mon, 16 Jun 2025 00:10:41 +0200 Subject: Initial commit --- .config/nvim/lua/core/keymaps.lua | 120 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100755 .config/nvim/lua/core/keymaps.lua (limited to '.config/nvim/lua/core/keymaps.lua') diff --git a/.config/nvim/lua/core/keymaps.lua b/.config/nvim/lua/core/keymaps.lua new file mode 100755 index 0000000..a65133d --- /dev/null +++ b/.config/nvim/lua/core/keymaps.lua @@ -0,0 +1,120 @@ +-- Core keymaps +-- General key mappings not tied to specific plugins + +-- Leader key +vim.g.mapleader = " " + +---------------- +-- NORMAL MODE +---------------- + +-- File operations +vim.keymap.set("n", "w", "w", { desc = "Save file" }) +vim.keymap.set("n", "q", "q", { desc = "Quit" }) +vim.keymap.set("n", "Q", "q!", { desc = "Force quit" }) +vim.keymap.set("n", "", "bd", { desc = "Close buffer" }) + +-- Quick buffer navigation +vim.keymap.set("n", "", "h", { desc = "Move to left window" }) +vim.keymap.set("n", "", "j", { desc = "Move to bottom window" }) +vim.keymap.set("n", "", "k", { desc = "Move to top window" }) +vim.keymap.set("n", "", "l", { desc = "Move to right window" }) + +-- Quick formatting +vim.keymap.set("n", "S", "ggVG=", { desc = "Format entire file" }) + +-- Quick line operations +vim.keymap.set("n", "o", "o", { desc = "New line below" }) +vim.keymap.set("n", "O", "O", { desc = "New line above" }) +vim.keymap.set("n", "J", "mzJ`z", { desc = "Join lines and maintain cursor" }) + +-- Better vertical navigation +vim.keymap.set("n", "", "zz", { desc = "Half page down and center" }) +vim.keymap.set("n", "", "zz", { desc = "Half page up and center" }) +vim.keymap.set("n", "n", "nzzzv", { desc = "Next search result and center" }) +vim.keymap.set("n", "N", "Nzzzv", { desc = "Prev search result and center" }) + +-- Clipboard operations +vim.keymap.set({"n", "v"}, "y", [["+y]], { desc = "Copy to system clipboard" }) +vim.keymap.set("n", "Y", [["+Y]], { desc = "Copy line to system clipboard" }) +vim.keymap.set({"n", "v"}, "d", [["_d]], { desc = "Delete to void register" }) +vim.keymap.set("x", "p", [["_dP]], { desc = "Paste over selection" }) + +-- Quickfix navigation +vim.keymap.set("n", "k", "lnextzz", { desc = "Next quickfix item" }) +vim.keymap.set("n", "j", "lprevzz", { desc = "Previous quickfix item" }) + +-- Undo remap +vim.keymap.set("n", "U", "", { desc = "Redo" }) + +-- Search and replace current word +vim.keymap.set("n", "s", [[:%s/\<\>//gI]], + { desc = "Replace current word" }) + +-- Terminal keymaps +vim.keymap.set("n", "t", "ToggleTerm", { desc = "Toggle terminal" }) +vim.keymap.set({"n", "i"},"", "ToggleTermSendCurrentLinej", { desc = "Send line to terminal" }) +vim.keymap.set("n","", "ggVG:'<,'>ToggleTermSendVisualLines", { desc = "Send file to terminal" }) +vim.keymap.set("i","", "ggVG:'<,'>ToggleTermSendVisualLinesi", { desc = "Send file to terminal" }) +vim.keymap.set("v","", ":ToggleTermSendVisualLines", { desc = "Send selection to terminal" }) + +-- File browser +vim.keymap.set("n", "-", "Oil", { desc = "Open parent directory with Oil" }) + +-- LSP +-- Jump to definition with gd +vim.keymap.set('n', 'gd', vim.lsp.buf.definition, {noremap=true, silent=true}) +-- Optional: Add other useful LSP keybindings +vim.keymap.set('n', 'gr', vim.lsp.buf.references, {noremap=true, silent=true}) +vim.keymap.set('n', 'K', vim.lsp.buf.hover, {noremap=true, silent=true}) +vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, {noremap=true, silent=true}) +vim.keymap.set('n', '', vim.lsp.buf.signature_help, {noremap=true, silent=true}) +vim.keymap.set('n', 'e', vim.diagnostic.open_float, { noremap=true, silent=true, desc = "Show diagnostics" }) + +-- Python docstring helper +vim.keymap.set("n", "dc", ":PythonDocstring", { + silent = true, + desc = "Insert Python docstring template" +}) + +---------------- +-- INSERT MODE +---------------- + +vim.keymap.set("i", "jk", "", { desc = "Exit insert mode" }) +vim.keymap.set("i", "e", "e", { desc = "Insert e after leader" }) +vim.keymap.set("i", "", "bd", { desc = "Close buffer" }) + +---------------- +-- VISUAL MODE +---------------- + +-- Move selected lines +vim.keymap.set("v", "J", ":m '>+1gv=gv", { desc = "Move selection down" }) +vim.keymap.set("v", "K", ":m '<-2gv=gv", { desc = "Move selection up" }) + +-- Telescope keymaps (grouped for related functionality) +vim.keymap.set("n", "ff", "Telescope find_files theme=dropdown", { desc = "Find files" }) +vim.keymap.set("n", "fm", "Telescope find_files cwd=D:/Optics/CODEV/Macros theme=dropdown", { desc = "Find macro files" }) +vim.keymap.set("n", "fc", "Telescope find_files cwd=C:/CODEV202403/macro theme=dropdown", { desc = "Find CODEV macro files" }) +vim.keymap.set("n", "fl", "Telescope find_files cwd=C:/CODEV202403/lens theme=dropdown", { desc = "Find lens files" }) +vim.keymap.set("n", "gg", "Telescope live_grep theme=dropdown", { desc = "Live grep" }) +vim.keymap.set("n", "gm", "Telescope live_grep cwd=D:/Optics/CODEV/Macros theme=dropdown", { desc = "Grep in macro files" }) +vim.keymap.set("n", "gc", "Telescope live_grep cwd=C:/CODEV202403/macro theme=dropdown", { desc = "Grep in CODEV macro files" }) +vim.keymap.set("n", "gl", "Telescope live_grep cwd=C:/CODEV202403/lens theme=dropdown", { desc = "Grep in lens files" }) +vim.keymap.set("n", "b", "Telescope buffers theme=dropdown", { desc = "List buffers" }) + +-- Harpoon keymaps +vim.keymap.set("n", "a", function() require("harpoon"):list():add() end, { desc = "Add file to harpoon" }) +vim.keymap.set("n", "", function() require("harpoon").ui:toggle_quick_menu(require("harpoon"):list()) end, { desc = "Toggle harpoon menu" }) +vim.keymap.set("n", "j", function() require("harpoon"):list():select(1) end, { desc = "Harpoon file 1" }) +vim.keymap.set("n", "k", function() require("harpoon"):list():select(2) end, { desc = "Harpoon file 2" }) +vim.keymap.set("n", "l", function() require("harpoon"):list():select(3) end, { desc = "Harpoon file 3" }) +vim.keymap.set("n", ";", function() require("harpoon"):list():select(4) end, { desc = "Harpoon file 4" }) +vim.keymap.set("n", "N", function() require("harpoon"):list():prev() end, { desc = "Previous harpoon file" }) +vim.keymap.set("n", "P", function() require("harpoon"):list():next() end, { desc = "Next harpoon file" }) + +-- Other tool keymaps +vim.keymap.set("n", "G", vim.cmd.Git, { desc = "Open Git status" }) +vim.keymap.set("n", "u", vim.cmd.UndotreeToggle, { desc = "Toggle undo tree" }) +vim.keymap.set("n", "[c", function() require("treesitter-context").go_to_context() end, { desc = "Go to context", silent = true }) -- cgit v1.2.3