diff options
Diffstat (limited to '.config/nvim/lua/keymaps.lua')
-rwxr-xr-x | .config/nvim/lua/keymaps.lua | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/.config/nvim/lua/keymaps.lua b/.config/nvim/lua/keymaps.lua new file mode 100755 index 0000000..16de10f --- /dev/null +++ b/.config/nvim/lua/keymaps.lua @@ -0,0 +1,68 @@ +vim.g.mapleader = " " +local function keymap(mode, lhs, rhs, opts) + opts = opts or { noremap = true, silent = true } + vim.keymap.set(mode, lhs, rhs, opts) +end + +keymap('n', '<leader><leader>', + function() require('luasnip').jump(1) end, + {noremap = true, silent = true}) + +-- Map leader + s and v/h to open split +keymap('n', '<leader>sp', ':sp<CR>') +keymap('n', '<leader>sv', ':vsp<CR>') + +keymap('n', '<leader>q', ':q<CR>') + +keymap('n', '<C-q>', ':mksession!<space>nvim-session<Enter>:wqa<Enter>') +keymap('n', '<C-s>', ':wa<Enter>:mksession!<space>nvim-session<Enter>') +keymap('n', '<C-p>', ':source<space>nvim-session<Enter>') + +keymap('n', '<leader>y', '"+y') +keymap('n', '<leader>d', '"+d') +keymap('n', '<leader>p', '"+p') +keymap('n', '<leader>Y', '"+Y') +keymap('n', '<leader>D', '"+D') +keymap('n', '<leader>P', '"+P') + +keymap('v', '<leader>y', '"+y') +keymap('v', '<leader>d', '"+d') +keymap('v', '<leader>p', '"+p') +keymap('v', '<leader>Y', '"+Y') +keymap('v', '<leader>D', '"+D') +keymap('v', '<leader>P', '"+P') + +keymap('n', '<M-h>', '<C-w>h') +keymap('n', '<M-k>', '<C-w>k') +keymap('n', '<M-j>', '<C-w>j') +keymap('n', '<M-l>', '<C-w>l') + +keymap('v', '<', '<gv') +keymap('v', '>', '>gv') + +keymap('i', '<C-BS>', '<C-w>') + +vim.api.nvim_create_autocmd('User', { + pattern = 'LspAttached', + desc = 'LSP Keymaps', + callback = function() + local function bufmap(mode, lhs, rhs) + keymap(mode, lhs, rhs, { silent = true, noremap = true, buffer = true }) + end + + bufmap('n', 'gD', vim.lsp.buf.declaration) + bufmap('n', 'gd', vim.lsp.buf.definition) + bufmap('n', 'K', vim.lsp.buf.hover) + bufmap('n', 'gi', vim.lsp.buf.implementation) + bufmap('n', '<C-k>', vim.lsp.buf.signature_help) + bufmap('n', '<leader>wa', vim.lsp.buf.add_workspace_folder) + bufmap('n', '<leader>wr', vim.lsp.buf.remove_workspace_folder) + bufmap('n', '<leader>wl', function() print(vim.inspect(vim.lsp.buf.list_workspace_folders())) end) + bufmap('n', '<leader>D', vim.lsp.buf.type_definition) + bufmap('n', '<leader>rn', vim.lsp.buf.rename) + bufmap('n', '<leader>ca', vim.lsp.buf.code_action) + bufmap('n', 'gr', vim.lsp.buf.references) + bufmap('n', '<leader>f', vim.lsp.buf.formatting) + bufmap('n', '<leader>e', vim.diagnostic.open_float) + end +}) |