dotfiles/.config/nvim/lua/keymap.lua

59 lines
2.5 KiB
Lua

--------------------------------------------------------------------------------
-- Define keymaps for Neovim
--
-- Note that leader is defined in init.lua to ensure that all mappings are
-- correct in plugins.
--
-- Plugins define their own keymappings in plugin_management.lua
--------------------------------------------------------------------------------
local map = vim.keymap.set
vim.g.mapleader = ','
vim.g.maplocalleader = ' '
-- Clear search highlighting
map('n', '<leader>/', ':nohlsearch<CR>', { desc = 'Clear Search Highlight' })
-- Save current buffer
map('n', '<leader>s', ':up<CR>', { desc = 'Save' })
-- Move to previous buffer
map('n', '<leader>bp', ':bp<CR>', { desc = 'Prev Buffer' })
-- Move to next buffer
map('n', '<leader>bn', ':bn<CR>', { desc = 'Next Buffer' })
-- Delete current buffer
map('n', '<leader>bd', ':bd<CR>', { desc = 'Delete Buffer' })
-- Close the quickfix window
map('n', '<leader>cq', ':ccl<CR>', { desc = 'Close Quickfix' })
-- Create a vertical split
map('n', '<leader>v', ':vsplit<CR>', { desc = 'Vertical Split' })
-- Enter the lambda λ character.
map('i', '<C-l>', '<C-k>l*', { desc = 'Enter the Lambda λ Character' })
-- Enter the lozenge ◊ character.
map('i', '<C-L>', '<C-k>LZ', { desc = 'Enter the Lozenge ◊ Character' })
-- Enter the function composition ∘ character.
map('i', '<C-o>', '<C-k>Ob', { desc = 'Enter the Function Composition ∘ Character' })
--------------------------------------------------------------------------------
-- LSP
--------------------------------------------------------------------------------
map('n', 'K', vim.lsp.buf.hover, { desc = 'Hover' })
map('n', 'gi', vim.lsp.buf.implementation, { desc = 'Go To Implementation' })
map('n', 'gr', vim.lsp.buf.references, { desc = 'Go To References' })
map('n', 'gd', vim.lsp.buf.definition, { desc = 'Go To Definition' })
map('n', 'gD', vim.lsp.buf.type_definition, { desc = 'Go To Type Definition' })
map('n', '<leader>cl', vim.lsp.codelens.run, { desc = 'Code Lens' })
map('n', '<leader>rn', vim.lsp.buf.rename, { desc = 'Rename' })
map('n', '<leader>ca', vim.lsp.buf.code_action, { desc = 'Code Action' })
map('n', '[c', '<cmd>lua vim.diagnostic.goto_prev({ wrap = false })<CR>', { desc = 'prev diagnostic' })
map('n', ']c', '<cmd>lua vim.diagnostic.goto_next({ wrap = false })<CR>', { desc = 'next diagnostic' })
map('n', '<leader>ls', ':Telescope lsp_document_symbols<CR>', { desc = 'Browse Document Symbols' })
map('n', '<leader>ld', ':Telescope lsp_dynamic_workspace_symbols<CR>', { desc = 'Browse Definitions' })