123 lines
8.1 KiB
Lua
123 lines
8.1 KiB
Lua
--/lua/keybinds.lua
|
|
-- This file defines all of the kybinds for nvim.
|
|
-- Add these lines at the very top of your keymaps file
|
|
vim.cmd('silent! unmapclear') -- Clears Normal, Visual, Select, and Operator-pending maps
|
|
vim.cmd('silent! cmapclear') -- Clears Command-line maps
|
|
vim.cmd('silent! imapclear') -- Clears Insert maps
|
|
vim.cmd('silent! tmapclear') -- Clears Terminal maps
|
|
|
|
-- ==========================================
|
|
-- Define your current keymaps below this line
|
|
-- ==========================================
|
|
package.loaded["custom-functions"] = nil
|
|
local utils = require("custom-functions")
|
|
|
|
-- move betwwen buffers and tabs easier
|
|
vim.keymap.set('n','<Tab>' ,':bnext<CR>')
|
|
vim.keymap.set('n','<S-Tab>' ,':bprev<CR>')
|
|
vim.keymap.set('n','<C-Tab>' ,':tabNext<CR>') --TODO fix these
|
|
vim.keymap.set('n','<C-S-Tab>' ,':tabprevious<CR>')
|
|
vim.keymap.set('n','<leader>tx' ,':tabclose<CR>')
|
|
vim.keymap.set('n','<leader>tn' ,':tabnew<CR>')
|
|
vim.keymap.set('n','<leader>bx' ,':bdelete<CR>')
|
|
vim.keymap.set('n','<leader>x' ,':bdelete<CR>')
|
|
-- resizing pains with resize.lua shortcut
|
|
vim.keymap.set('n','<M-Left>' ,"<cmd>lua require('resize').ResizeLeft()<CR>")
|
|
vim.keymap.set('n','<M-Right>' ,"<cmd>lua require('resize').ResizeRight()<CR>")
|
|
vim.keymap.set('n','<M-Up>' ,"<cmd>lua require('resize').ResizeUp()<CR>")
|
|
vim.keymap.set('n','<M-Down>' ,"<cmd>lua require('resize').ResizeDown()<CR>")
|
|
-- terminal interface shortcuts
|
|
vim.keymap.set('n','<Esc>' ,'<cmd>nohlsearch<CR>')
|
|
vim.keymap.set('t','<Esc><Esc>' ,'<C-\\><C-n>' ,{ desc = 'Exit terminal mode' })
|
|
vim.keymap.set('t','<C-h>' ,'<C-\\><C-n><C-w><C-h>' ,{ desc = 'Move focus to the left window' })
|
|
-- vim.keymap.set('n','<leader>r' ,'<cmd>TermExec cmd="clear && make"<CR>' ,{ desc = '[r]un make in terminal' })
|
|
vim.keymap.set('n','<leader>l' ,function() utils.RunCommand("l") end ,{ desc = 'run [l]ast command in terminal' })
|
|
vim.keymap.set('n','<leader>ss' ,function() utils.saveSnapshot() end ,{ desc = '[S]ave a [S]napshot of the current windows' })
|
|
vim.keymap.set('n','<leader>sr' ,function() utils.returnSnapshot() end ,{ desc = '[R]eturn to saved [S]napshot' })
|
|
vim.keymap.set('n','<leader>n' ,'<cmd>ToggleTerm direction=vertical name=compile size=70<CR>', { desc = 'open a [n]ew terminal' })
|
|
vim.keymap.set('n','<leader>te' ,'<cmd>ToggleTerm<CR>' ,{desc = '[T]oggle all terminals'})
|
|
vim.keymap.set("n","<leader>e" ,"<cmd>NvimTreeToggle<CR>" ,{desc = 'open [E]xplorer'})
|
|
vim.keymap.set("n","<leader>E" ,"<cmd>e!<CR>" ,{desc = '[E]dit current file from disk'})
|
|
vim.keymap.set("n","<M-r>" ,"<cmd>e!<CR>" ,{desc = '[E]dit current file from disk'})
|
|
-- Diagnostic keymaps
|
|
vim.keymap.set('n', '<leader>q' ,vim.diagnostic.setloclist ,{ desc = 'Open diagnostic [Q]uickfix list' })
|
|
vim.keymap.set("n", "<leader>R" ,"<cmd>source %<Cr>:echo 'Config reloaded!'<CR>" ,{ desc = "[S]ource config file"})
|
|
vim.keymap.set("n", "<leader><C-R>k" ,"<cmd>source /home/venus/.config/nvim/lua/keybinds.lua<Cr>:echo 'Config reloaded!'<CR>" ,{ desc = "[R]eload [k]eybinds"})
|
|
vim.keymap.set("n", "<leader><C-R>c" ,"<cmd>source /home/venus/.config/nvim/lua/autocommands.lua<Cr>:echo 'Config reloaded!'<CR>" ,{ desc = "[R]eload [a]utocommands"})
|
|
vim.keymap.set("n", "<leader><C-R>o" ,"<cmd>source /home/venus/.config/nvim/lua/options.lua<Cr>:echo 'Config reloaded!'<CR>" ,{ desc = "[R]eload [o]ptions"})
|
|
-- LSP functions
|
|
vim.keymap.set('n', 'gd' ,vim.lsp.buf.definition, { desc = "LSP Go to Definition" })
|
|
vim.keymap.set('n', 'gr' ,'<cmd>Telescope lsp_references<cr>' ,{ desc = "LSP [R]eferences" })
|
|
vim.keymap.set('n', 'gi' ,'<cmd>Telescope lsp_implementations<cr>' ,{ desc = "LSP [I]mplementations" })
|
|
vim.keymap.set('n', 'gs' ,'<cmd>Telescope lsp_document_symbols<cr>' ,{ desc = "LSP Document [S]ymbols" })
|
|
vim.keymap.set('n', 'sk' ,'<cmd>Telescope keymaps<cr>' ,{ desc = "[S]earch [K]eymaps" })
|
|
vim.keymap.set('n', 'sd' ,'<cmd>Telescope diagnostics<cr>' ,{ desc = "[S]earch [D]iagnostics" })
|
|
vim.keymap.set('n', 'sw' ,'<cmd>Telescope grep_string<cr>' ,{ desc = "[S]earch current [W]ord" })
|
|
vim.keymap.set('n', '<leader>ff' ,'<cmd>Telescope find_files<cr>' ,{ desc = 'Telescope find files' })
|
|
vim.keymap.set('n', '<leader>fg' ,'<cmd>Telescope live_grep<cr>' ,{ desc = 'Telescope live grep' })
|
|
vim.keymap.set('n', '<leader>fb' ,'<cmd>Telescope buffers<cr>' ,{ desc = 'Telescope buffers' })
|
|
vim.keymap.set('n', '<leader>fh' ,'<cmd>Telescope help_tags<cr>' ,{ desc = 'Telescope help tags' })
|
|
vim.keymap.set('n', '<leader>tt' ,'<cmd>Telescope<cr>' ,{ desc = 'Open [T]elescope' })
|
|
|
|
-- Disable arrow keys in normal mode
|
|
vim.keymap.set('n','<left>' ,'<cmd>echo "Use h to move!!"<CR>')
|
|
vim.keymap.set('n','<right>' ,'<cmd>echo "Use l to move!!"<CR>')
|
|
vim.keymap.set('n','<up>' ,'<cmd>echo "Use k to move!!"<CR>')
|
|
vim.keymap.set('n','<down>' ,'<cmd>echo "Use j to move!!"<CR>')
|
|
|
|
-- See `:help wincmd` for a list of all window commands
|
|
vim.keymap.set('n','<C-h>' ,'<C-w><C-h>' ,{ desc = 'Move focus to the left window' })
|
|
vim.keymap.set('n','<C-l>' ,'<C-w><C-l>' ,{ desc = 'Move focus to the right window' })
|
|
vim.keymap.set('n','<C-j>' ,'<C-w><C-j>' ,{ desc = 'Move focus to the lower window' })
|
|
vim.keymap.set('n','<C-k>' ,'<C-w><C-k>' ,{ desc = 'Move focus to the upper window' })
|
|
|
|
-- NOTE: Some terminals have colliding keymaps or are not able to send distinct keycodes
|
|
vim.keymap.set("n","<C-S-h>" ,"<C-w>H" ,{ desc = "Move window to the left" })
|
|
vim.keymap.set("n","<C-S-l>" ,"<C-w>L" ,{ desc = "Move window to the right" })
|
|
vim.keymap.set("n","<C-S-j>" ,"<C-w>J" ,{ desc = "Move window to the lower" })
|
|
vim.keymap.set("n","<C-S-k>" ,"<C-w>K" ,{ desc = "Move window to the upper" })
|
|
|
|
-- [[ Basic QOL
|
|
vim.keymap.set("n", "<leader>rn" ,":IncRename " ,{ desc = '[R]e[n]ame variable under cursor'})
|
|
vim.keymap.set('n', '<leader>I' ,'<cmd>GuessIndent<cr>' ,{ desc = '[G]uess Indent level' })
|
|
vim.keymap.set("n", "<leader>i" ,"m'gg=G''" ,{ desc = "Re-indent whole file" })
|
|
vim.keymap.set("n", "<leader>y" ,"m'ggyG''" ,{ desc = "[Y]ank whole file" })
|
|
vim.keymap.set("n", "<C-A>" ,"m'ggyG''" ,{ desc = "[Y]ank whole file" })
|
|
vim.keymap.set("n", "<leader>sr" ,[[:%s/\<<C-r><C-w>\>/<C-r><C-w>/gI<Left><Left><Left>]] ,{ desc = "[S]earch/[R]eplace word under cursor" })
|
|
|
|
-- PLUGIN KEYBINDS
|
|
vim.keymap.set({ "n", "v" } ,"<leader>ag" ,"<cmd>Antigravity<cr>" ,{ desc = "Open Antigravity" })
|
|
vim.keymap.set({ "n", "v" } ,"<leader>aa" ,"<cmd>CodeCompanionActions<cr>" ,{ desc = "CodeCompanion - Actions" })
|
|
vim.keymap.set({ "n", "v" } ,"<leader>ac" ,"<cmd>CodeCompanionChat Toggle<cr>" ,{ desc = "CodeCompanion - Chat" })
|
|
vim.keymap.set({ "n", "v" } ,"<leader>ai" ,"<cmd>CodeCompanion<cr>" ,{ desc = "CodeCompanion - Inline" })
|
|
vim.keymap.set("v" ,"<leader>ad" ,"<cmd>CodeCompanionChat Add<cr>" ,{ desc = "CodeCompanion - Add to Chat" })
|
|
-- Expand 'cc' into 'CodeCompanion' in the command line
|
|
vim.cmd([[cab cc CodeCompanion]])
|
|
|
|
--spellcheck keybind to toggle on current buffer
|
|
vim.keymap.set('n',"<leader>ze" ,"<cmd>setlocal spell<cr>" ,{ desc = "enable spellecheck on buffer" })
|
|
vim.keymap.set('n',"<leader>zd" ,"<cmd>setlocal nospell<cr>" ,{ desc = "Disable spellecheck on buffer" })
|
|
|
|
--Hex Editing
|
|
vim.keymap.set('n', '<leader>hh' ,'<cmd>Hex<CR>' ,{ desc = 'open [H]ex view of a file' })
|
|
|
|
--Neogit
|
|
-- <leader>gg bound to UI toggle
|
|
vim.keymap.set('n', '<leader>gg' ,'<cmd>Neogit<cr>' ,{ desc = 'open Neo[g]it interface' })
|
|
vim.keymap.set('n', '<leader>gc' ,'<cmd>Neogit commit<cr>' ,{ desc = 'open Neogit [c]ommit page' })
|
|
vim.keymap.set('n', '<leader>gd' ,'<cmd>Neogit diff<cr>' ,{ desc = 'open Neogit [d]iff page' })
|
|
vim.keymap.set('n', '<leader>gt' ,'<cmd>Neogit tagg<cr>' ,{ desc = 'open Neogit [t]agg page' })
|
|
|
|
-- Obsidian
|
|
vim.keymap.set("n", "gf", function()
|
|
if require("obsidian").util.cursor_on_markdown_link() then
|
|
return "ObsidianFollowLink"
|
|
else
|
|
return "gf"
|
|
end
|
|
end, { expr = true, desc = "Follow Obsidian link" })
|
|
|
|
vim.keymap.set("n", "<leader>os" , "ObsidianSearch" , { desc = "Search Obsidian" })
|
|
vim.keymap.set("n", "<leader>on" , "ObsidianNew" , { desc = "New Obsidian note" })
|
|
|