Files
Nvim/lua/keybinds.lua

89 lines
4.4 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
-- ==========================================
vim.keymap.set('n', '<leader>w', ':w<CR>')
package.loaded["custom-functions"] = nil
local utils = require("custom-functions")
-- move betwwen buffer easier
vim.keymap.set('n','<Tab>' ,':bnext<CR>')
vim.keymap.set('n','<S-Tab>' ,':bprev<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('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>n' ,'<cmd>ToggleTerm direction=vertical name=compile size=70<CR>', { desc = 'open a [n]ew terminal' })
vim.keymap.set('n','<leader>t' ,'<cmd>ToggleTerm<CR>' ,{desc = '[T]oggle all terminals'})
vim.keymap.set("n","<leader>e" ,"<cmd>NvimTreeToggle<CR>" ,{desc = 'open [E]xplorer'})
-- 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"})
-- 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>a", ":IncRename ", {desc = 'ren[A]me variable under cursor'})
-- PLUGIN KEYBINDS
-- gemini CLI bindngs
-- TODO better AI implementation
vim.keymap.set('n',"<leader>a/" ,"<cmd>Gemini toggle<cr>" ,{ desc = "Toggle Gemini CLI" })
vim.keymap.set('n',"<leader>aa" ,"<cmd>Gemini toggle<cr>" ,{ desc = "Toggle Gemini CLI" })
vim.keymap.set('n',"<leader>aq" ,"<cmd>Gemini ask<cr>" ,{ desc = "Ask Gemini", })
vim.keymap.set('n',"<leader>af" ,"<cmd>Gemini add_file<cr>" ,{ desc = "Add File"} )
--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' })