Files
nvim-config/lua/keymaps.lua
2025-09-12 13:13:23 -04:00

151 lines
9.4 KiB
Lua

local vim = vim
vim.keymap.set("n", "<C-w>s", function()
vim.cmd("split")
vim.cmd("wincmd j")
end, { noremap = true })
vim.keymap.set("n", "<C-w>v", function()
vim.cmd("vsplit")
vim.cmd("wincmd l")
end, { noremap = true })
-- Leader Maps
vim.keymap.set("n", "<leader>f", "", { desc = "Files"})
vim.keymap.set("n", "<leader>ff", ":FzfLua files<CR>", { desc = "File Finder"})
-- vim.keymap.set("n", "<leader>fe", ":Pick files<CR>", { desc = "File Picker"})
vim.keymap.set("n", "<leader>ft", t3_toggle_netrw, { desc = "File Tree"})
vim.keymap.set("n", "<leader>b", "", { desc = "Buffers"})
vim.keymap.set("n", "<leader>bb", ":Pick buffers<CR>", { desc = "Buffer Picker"})
vim.keymap.set("n", "<leader>bp", ":bp<CR>", { desc = "Previous"})
vim.keymap.set("n", "<leader>bn", ":bn<CR>", { desc = "Next"})
vim.keymap.set("n", "<leader>bd", ":bd<CR>", { desc = "Delete"})
vim.keymap.set("n", "<leader>g", "", { desc = "Grep"})
vim.keymap.set("n", "<leader>gg", ":FzfLua grep<CR>", { desc = "Grep"})
vim.keymap.set("n", "<leader>gr", ":FzfLua grep resume=true<CR>", { desc = "Resume Grep"})
vim.keymap.set("n", "<leader>G", "", { desc = "Git"})
vim.keymap.set("n", "<leader>Gg", ":LazyGit<CR>", { desc = "LazyGit"})
vim.keymap.set("n", "<leader>GC", ":LazyGitConfig<CR>", { desc = "LazyGit Config"})
vim.keymap.set("n", "<leader>Gc", ":LazyGitFilter<CR>", { desc = "Commits"})
vim.keymap.set("n", "<leader>Gl", ":LazyGitLog<CR>", { desc = "Log"})
vim.keymap.set("n", "<leader><Tab>", "", { desc = "Tabs"})
vim.keymap.set("n", "<leader><Tab><Tab>", ":tabnew<CR>", { desc = "New Tab"})
vim.keymap.set("n", "<leader><Tab>p", ":tabprevious<CR>", { desc = "Previous Tab"})
vim.keymap.set("n", "<leader><Tab>n", ":tabnext<CR>", { desc = "Next Tab"})
vim.keymap.set("n", "<leader><Tab>d", ":tabclose<CR>", { desc = "Delete Tab"})
vim.keymap.set("n", "<leader><Tab>l", ":tablast<CR>", { desc = "Last Tab"})
vim.keymap.set("n", "<leader><Tab>f", ":tabfirst<CR>", { desc = "First Tab"})
vim.keymap.set("n", "<leader><Tab>m", ":tabmove<CR>", { desc = "Move Tab"})
vim.keymap.set("n", "<leader><Tab>r", ":tabrenumber<CR>", { desc = "Renumber Tabs"})
vim.keymap.set("n", "<leader><Tab>c", ":tabclose!<CR>", { desc = "Force Close Tab"})
vim.keymap.set("n", "gR", "<CMD>Glance references<CR>", { desc = "Glance References" })
vim.keymap.set("n", "gD", "<CMD>Glance definitions<CR>", { desc = "Glance Definitions" })
vim.keymap.set("n", "gY", "<CMD>Glance type_definitions<CR>", { desc = "Glance Type Definitions" })
vim.keymap.set("n", "gM", "<CMD>Glance implementations<CR>", { desc = "Glance Implementations" })
vim.keymap.set("n", "<A-Tab>", ":b#<CR>", { desc = "Switch to Last Buffer" })
vim.keymap.set("n", "<A-Left>", ":bprevious<CR>", { desc = "Previous Buffer" })
vim.keymap.set("n", "<A-Right>", ":bnext<CR>", { desc = "Next Buffer" })
vim.keymap.set("n", "<A-Up>", ":tabprevious<CR>", { desc = "Previous Tab" })
vim.keymap.set("n", "<A-Down>", ":tabnext<CR>", { desc = "Next Tab" })
vim.keymap.set("n", "<A-1>", "<Cmd>BufferGoto 1<CR>", { desc = "Go to Buffer 1" })
vim.keymap.set("n", "<A-2>", "<Cmd>BufferGoto 2<CR>", { desc = "Go to Buffer 2" })
vim.keymap.set("n", "<A-3>", "<Cmd>BufferGoto 3<CR>", { desc = "Go to Buffer 3" })
vim.keymap.set("n", "<A-4>", "<Cmd>BufferGoto 4<CR>", { desc = "Go to Buffer 4" })
vim.keymap.set("n", "<A-5>", "<Cmd>BufferGoto 5<CR>", { desc = "Go to Buffer 5" })
vim.keymap.set("n", "<A-6>", "<Cmd>BufferGoto 6<CR>", { desc = "Go to Buffer 6" })
vim.keymap.set("n", "<A-7>", "<Cmd>BufferGoto 7<CR>", { desc = "Go to Buffer 7" })
vim.keymap.set("n", "<A-8>", "<Cmd>BufferGoto 8<CR>", { desc = "Go to Buffer 8" })
vim.keymap.set("n", "<A-9>", "<Cmd>BufferGoto 9<CR>", { desc = "Go to Buffer 9" })
vim.keymap.set("n", "<A-0>", "<Cmd>BufferLast<CR>", { desc = "Go to Last Buffer" })
-- Meta X Maps
vim.keymap.set("n", "<M-x><M-x>", ":Telescope commands<CR>", { desc = "Commands"})
vim.keymap.set("n", "<M-x>b", ":Telescope buffers<CR>", { desc = "Buffers"})
vim.keymap.set("n", "<M-x>f", ":Telescope find_files<CR>", { desc = "Find Files"})
vim.keymap.set("n", "<M-x>g", ":Telescope live_grep<CR>", { desc = "Live Grep"})
vim.keymap.set("n", "<M-x>h", ":Telescope help_tags<CR>", { desc = "Help Tags"})
vim.keymap.set("n", "<M-x>p", ":Telescope project<CR>", { desc = "Projects"})
vim.keymap.set("n", "<M-x>l", ":Telescope resume<CR>", { desc = "Resume Last Search"})
vim.keymap.set("n", "<M-x>c", ":Telescope colorscheme<CR>", { desc = "Colorschemes"})
vim.keymap.set("n", "<M-x>n", ":enew<CR>", { desc = "New File"})
vim.keymap.set("n", "<M-x>s", ":w<CR>", { desc = "Save File"})
vim.keymap.set("n", "<M-x>q", ":q<CR>", { desc = "Quit"})
vim.keymap.set("n", "<M-x>w", ":bd<CR>", { desc = "Close Buffer"})
vim.keymap.set("n", "<M-x>a", "ggVG", { desc = "Select All"})
vim.keymap.set("n", "<M-x>z", "u", { desc = "Undo"})
vim.keymap.set("n", "<M-x>y", "<C-r>", { desc = "Redo"})
vim.keymap.set("n", "<M-x>/", ":nohlsearch<CR>", { desc = "Clear Search Highlight"})
vim.keymap.set("n", "<M-x>=", ":vertical resize +5<CR>", { desc = "Increase Window Width"})
vim.keymap.set("n", "<M-x>-"," :vertical resize -5<CR>", { desc = "Decrease Window Width"})
vim.keymap.set("n", "<M-x>+", ":resize +5<CR>", { desc = "Increase Window Height"})
vim.keymap.set("n", "<M-x>_", ":resize -5<CR>", { desc = "Decrease Window Height"})
-- CTRL X Maps
vim.keymap.set("n", "<C-x><C-b>", ":Pick buffers<CR>", { desc = "Buffer Picker"})
vim.keymap.set("n", "<C-x><C-f>", ":Pick files<CR>", { desc = "File Picker"})
vim.keymap.set("n", "<C-x><C-h>", ":Pick help<CR>", { desc = "Help Picker"})
vim.keymap.set("n", "<C-x><C-g>", "", { desc = "Grep"})
vim.keymap.set("n", "<C-x><C-g>g", ":Pick grep<CR>", { desc = "Grep"})
vim.keymap.set("n", "<C-x><C-g>l", ":Pick grep_live<CR>", { desc = "Live Grep"})
vim.keymap.set("n", "<C-x><C-n>", "", { desc = "Notes"})
vim.keymap.set("n", "<C-x><C-n>e", "<cmd>TWEditTask<cr>", { desc = "TaskWarrior Edit", noremap = true, silent = true })
vim.keymap.set("n", "<C-x><C-n>v", "<cmd>TWView<cr>", { desc = "View Tasks", noremap = true, silent = true })
vim.keymap.set("n", "<C-x><C-n>u", "<cmd>TWUpdateCurrent<cr>", { desc="Update Tasks", noremap = true, silent = true })
vim.keymap.set("n", "<C-x><C-n>s", "<cmd>TWSyncTasks<cr>", { desc = "Sync Tasks", noremap = true, silent = true })
vim.keymap.set("n", "<C-x><C-n><c-space>", "<cmd>TWToggle<cr>", { desc = "Toggle Taskwarrior", silent = true })
-- FN Keys --
vim.keymap.set("n", "<F1>", ":nohlsearch<CR>", { desc = "Clear Search Highlight"})
vim.keymap.set("n", "<F2>", ":UndotreeToggle<CR>", { desc = "Undo Tree Toggle"})
vim.keymap.set("n", "<F3>", ":Ranger<CR>", { desc = "Ranger"})
vim.keymap.set("n", "<c-F3>", ":RangerNewTab<CR>", { desc = "Ranger New Tab"})
vim.keymap.set("n", "<f9>", ":Telescope live_grep<cr>", { desc = "live grep"})
vim.keymap.set("n", "<F11>", ":setlocal spell! spelllang=en_us<CR>", { desc = "Toggle Spell Check"})
vim.keymap.set("n", "<F12>", ":setlocal wrap!<CR>", { desc = "Toggle Line Wrap"})
vim.keymap.set( "n", "<leader>a", "", {desc = "AI/Claude Code" })
vim.keymap.set( "n", "<leader>ac", "<cmd>ClaudeCode<cr>", {desc = "Toggle Claude" })
vim.keymap.set( "n", "<leader>af", "<cmd>ClaudeCodeFocus<cr>", {desc = "Focus Claude" })
vim.keymap.set( "n", "<leader>ar", "<cmd>ClaudeCode --resume<cr>", {desc = "Resume Claude" })
vim.keymap.set( "n", "<leader>aC", "<cmd>ClaudeCode --continue<cr>", {desc = "Continue Claude" })
vim.keymap.set( "n", "<leader>am", "<cmd>ClaudeCodeSelectModel<cr>", {desc = "Select Claude model" })
vim.keymap.set( "n", "<leader>ab", "<cmd>ClaudeCodeAdd %<cr>", {desc = "Add current buffer" })
vim.keymap.set( "v", "<leader>as", "<cmd>ClaudeCodeSend<cr>", {desc = "Send to Claude" })
-- vim.keymap.set( "n", "<leader>as", "<cmd>ClaudeCodeTreeAdd<cr>", {desc = "Add file", ft = { "NvimTree", "neo-tree", "oil", "minifiles" }})
vim.keymap.set( "n", "<leader>aa", "<cmd>ClaudeCodeDiffAccept<cr>", {desc = "Accept diff" })
vim.keymap.set( "n", "<leader>ad", "<cmd>ClaudeCodeDiffDeny<cr>", {desc = "Deny diff" })
vim.api.nvim_create_autocmd("FileType", {
pattern = { "NvimTree", "neo-tree", "oil", "minifiles" },
callback = function()
vim.keymap.set("n", "<leader>as", "<cmd>ClaudeCodeTreeAdd<cr>", {
desc = "Add file",
buffer = true
})
end,
})
-- COC Keybindings
vim.keymap.set( "n", "K", function() _G.ShowDocumentation() end, { noremap = true, silent = true, desc = "Show Documentation" })
vim.keymap.set( "n", "<leader>l", "", {desc = "LSP" })
vim.keymap.set( "n", "<leader>lc", "", {desc = "Completions" })
vim.keymap.set( "n", "<leader>lch", "<cmd>CocCommand document.toggleInlayHint<cr>", {desc = "Toggle Inline Hints" })
vim.keymap.set( "n", "<leader>lcs", "<cmd>CocOutline<cr>", {desc = "Show Symbol Outline" })
vim.keymap.set( "n", "<leader>lcl", "<cmd>CocCommand document.toggleCodeLens<cr>", {desc = "Show Code Lens" })
-- Tag-like functionality using LSP
vim.keymap.set( "n", "<leader>lt", "", {desc = "Tags" })
vim.keymap.set( "n", "<leader>lts", ":Telescope lsp_document_symbols<CR>", {desc = "Document Symbols" })
vim.keymap.set( "n", "<leader>ltw", ":Telescope lsp_workspace_symbols<CR>", {desc = "Workspace Symbols" })
vim.keymap.set( "n", "<leader>ltd", ":Telescope lsp_dynamic_workspace_symbols<CR>", {desc = "Dynamic Workspace Symbols" })
vim.keymap.set( "n", "<C-]>", "<cmd>lua vim.lsp.buf.definition()<cr>", {desc = "Go to Definition" })
vim.keymap.set( "n", "<C-t>", "<C-o>", {desc = "Jump Back" })
vim.keymap.set( "n", "g]", "<cmd>lua vim.lsp.buf.references()<cr>", {desc = "Find References" })