Files
nix/users/blake/dotfiles/nvim/lua.new/base/keymaps.lua
2025-10-10 02:06:54 -05:00

57 lines
1.9 KiB
Lua

-- Remap leader key to comma
vim.g.mapleader = " "
local keymap = vim.keymap.set
-- General keymaps
keymap('n', '<leader>w', ':w<CR>', { desc = 'Save file' })
keymap('n', '<leader>q', ':q<CR>', { desc = 'Quit' })
keymap('n', '<leader>qq', ':q!<CR>', { desc = 'Force quit' })
-- Split navigation
keymap('n', '<leader>vs', ':vsplit<CR>', { desc = 'Vertical Split' })
keymap('n', '<leader>hs', ':split<CR>', { desc = 'Horizontal Split' })
-- File searching
keymap('n', '<leader>ff', ':Telescope find_files<CR>', { desc = 'Find Files' })
keymap('n', '<leader>fg', ':Telescope live_grep<CR>', { desc = 'Live Grep' })
keymap('n', '<leader>fb', ':Telescope buffers<CR>', { desc = 'Buffers' })
-- Buffer management
keymap('n', '<leader>bd', ':bd<CR>', { desc = 'Delete Buffer' })
-- ╭───────────────────────────────╮
-- │ LSP Keymaps (Attach Hook) │
-- ╰───────────────────────────────╯
local M = {}
function M.on_attach(_, bufnr)
local opts = { noremap = true, silent = true, buffer = bufnr }
local keymap = vim.keymap.set
-- LSP: Go to
keymap('n', 'gd', vim.lsp.buf.definition, opts)
keymap('n', 'gD', vim.lsp.buf.declaration, opts)
keymap('n', 'gi', vim.lsp.buf.implementation, opts)
keymap('n', 'gr', vim.lsp.buf.references, opts)
keymap('n', 'K', vim.lsp.buf.hover, opts)
-- LSP: Actions
keymap('n', '<leader>rn', vim.lsp.buf.rename, opts)
keymap({ 'n', 'v' }, '<leader>ca', vim.lsp.buf.code_action, opts)
-- LSP: Diagnostics
keymap('n', '[d', vim.diagnostic.goto_prev, opts)
keymap('n', ']d', vim.diagnostic.goto_next, opts)
keymap('n', '<leader>e', vim.diagnostic.open_float, opts)
keymap('n', '<leader>q', vim.diagnostic.setloclist, opts)
-- LSP: Formatting
keymap('n', '<leader>f', function()
vim.lsp.buf.format({ async = true })
end, opts)
end
return M