vim.g.mapleader = ' ' -- better window movement vim.api.nvim_set_keymap('n', '', 'h', {silent = true}) vim.api.nvim_set_keymap('n', '', 'j', {silent = true}) vim.api.nvim_set_keymap('n', '', 'k', {silent = true}) vim.api.nvim_set_keymap('n', '', 'l', {silent = true}) -- resize with arrows vim.api.nvim_set_keymap('n', '', ':resize -2', {silent = true}) vim.api.nvim_set_keymap('n', '', ':resize +2', {silent = true}) vim.api.nvim_set_keymap('n', '', ':vertical resize -2', {silent = true}) vim.api.nvim_set_keymap('n', '', ':vertical resize +2', {silent = true}) -- improved keyboard support for navigation (especially terminal) vim.api.nvim_set_keymap('n', 'h', 'h', {noremap = true}) vim.api.nvim_set_keymap('n', 'j', 'j', {noremap = true}) vim.api.nvim_set_keymap('n', 'k', 'k', {noremap = true}) vim.api.nvim_set_keymap('n', 'l', 'l', {noremap = true}) vim.api.nvim_set_keymap('n', '', 'h', {noremap = true}) vim.api.nvim_set_keymap('n', '', 'j', {noremap = true}) vim.api.nvim_set_keymap('n', '', 'k', {noremap = true}) vim.api.nvim_set_keymap('n', '', 'l', {noremap = true}) -- Change 2 split windows from vert to horiz or horiz to vert vim.api.nvim_set_keymap('n', 'th', 'tH', {noremap = true}) vim.api.nvim_set_keymap('n', 'tk', 'tK', {noremap = true}) -- Make adjusting split sizes a bit more friendly vim.cmd([[ noremap :vertical resize +3 noremap :vertical resize -3 noremap :resize +3 noremap :resize -3 ]]) -- better indenting vim.api.nvim_set_keymap('v', '<', '', '>gv', {noremap = true, silent = true}) -- Tab switch buffer vim.api.nvim_set_keymap('n', '', ':bnext', {noremap = true, silent = true}) vim.api.nvim_set_keymap('n', '', ':bprevious', {noremap = true, silent = true}) -- Move selected line / block of text in visual mode vim.api.nvim_set_keymap('x', 'J', ':move \'>+1gv-gv', {noremap = true, silent = true}) vim.api.nvim_set_keymap('x', 'K', ':move \'<-2gv-gv', {noremap = true, silent = true}) vim.api.nvim_set_keymap('n', 'Q', '', {noremap = true, silent = true}) -- Telescope vim.api.nvim_set_keymap('n', 'fs', ':lua require(\'telescope.builtin\').grep_string({ search = vim.fn.input("Grep For > ")})', {noremap = true}) vim.api.nvim_set_keymap('n', 'ff', ':lua require(\'telescope.builtin\').find_files()', {noremap = true}) vim.api.nvim_set_keymap('n', 'fw', ':lua require(\'telescope.builtin\').grep_string { search = vim.fn.expand("") }', {noremap = true}) vim.api.nvim_set_keymap('n', 'fb', ':lua require(\'telescope.builtin\').buffers()', {noremap = true}) vim.api.nvim_set_keymap('n', 'vh', ':lua require(\'telescope.builtin\').help_tags()', {noremap = true}) vim.api.nvim_set_keymap('n', 'gwl', ':lua require(\'telescope\').extensions.git_worktree.git_worktrees()', {noremap = true}) vim.api.nvim_set_keymap('n', 'gwc', ':lua require(\'telescope\').extensions.git_worktree.create_git_worktree()', {noremap = true}) -- Tagbar vim.api.nvim_set_keymap('n', 'hl', ':nohl', {noremap = true}) -- Vim Test vim.api.nvim_set_keymap('n', 't', ':TestNearest', {noremap = true}) vim.api.nvim_set_keymap('n', 'T', ':TestFile', {noremap = true}) vim.api.nvim_set_keymap('n', 'a', ':TestSuite', {noremap = true}) vim.api.nvim_set_keymap('n', 'l', ':TestLast', {noremap = true}) vim.api.nvim_set_keymap('n', 'g', ':TestVisit', {noremap = true}) -- LSP vim.cmd("nnoremap gd lua vim.lsp.buf.definition()") vim.cmd("nnoremap gD lua vim.lsp.buf.declaration()") vim.cmd("nnoremap gr lua vim.lsp.buf.references()") vim.cmd("nnoremap gi lua vim.lsp.buf.implementation()") vim.cmd("nnoremap ca :Lspsaga code_action") vim.cmd("nnoremap K :Lspsaga hover_doc") vim.cmd("nnoremap rn lua vim.lsp.buf.rename()") vim.cmd("nnoremap ff lua vim.lsp.buf.formatting()") vim.cmd('nnoremap lua vim.lsp.buf.signature_help()') vim.cmd("nnoremap :Lspsaga diagnostic_jump_prev") vim.cmd("nnoremap :Lspsaga diagnostic_jump_next") -- -- scroll down hover doc or scroll in definition preview vim.cmd("nnoremap lua require('lspsaga.action').smart_scroll_with_saga(1)") -- -- scroll up hover doc vim.cmd("nnoremap lua require('lspsaga.action').smart_scroll_with_saga(-1)") vim.cmd('command! -nargs=0 LspVirtualTextToggle lua require("lsp/virtual_text").toggle()') -- Yank until end of line vim.api.nvim_set_keymap('n', 'Y', 'yg$', {noremap = true, silent = true}) -- Next item, but center line vim.api.nvim_set_keymap('n', 'n', 'nzzzv', {noremap = true, silent = true}) vim.api.nvim_set_keymap('n', 'N', 'Nzzzv', {noremap = true, silent = true}) -- Join line but keep cursor intact vim.api.nvim_set_keymap('n', 'J', 'mzJ`z', {noremap = true, silent = true})