59 lines
2.5 KiB
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' })
|