-- Tab mappings --- vim.keymap.set("n", "tn", vim.cmd.tabnew) vim.keymap.set("n", "tq", vim.cmd.tabclose) -- Clipboard if vim.env.TMUX and vim.fn.executable('tmux') then vim.keymap.set( { "n", "x" }, "y", "\"+y:call system('tmux load-buffer -w -', @+)" ) else vim.keymap.set({ "n", "x", }, "y", '"+y') end vim.keymap.set({ "n", "x", }, "p", '"+p') vim.keymap.set({ "n", "x", }, "P", '"+P') vim.keymap.set({ "n", "x", }, "+", ":call setreg('+', @\")") -- Allow exiting insert mode in terminal by hitting vim.keymap.set("t", "", "") -- Use :diffput/get instead of normal one to allow staging visual selection vim.keymap.set({"n", "x"}, "dp", ":diffput") vim.keymap.set({"n", "x"}, "do", ":diffget") local close_pum = function() if vim.fn.pumvisible() ~= 0 then return "pclose" end for _, winid in pairs(vim.api.nvim_tabpage_list_wins(0)) do if vim.api.nvim_win_get_config(winid).relative ~= "" then return "fclose" end end end vim.keymap.set({ "n", "i" }, "", function() return close_pum() end, { expr = true }) vim.keymap.set("n", "q", ":bp | bd#") -- Allow (de)indenting without deselecting vim.keymap.set({"x"}, "<", "", ">gv") -- Remove default mappings vim.keymap.set("", "", "") vim.keymap.set('n', 'K', function() if vim.bo.filetype == 'vim' or vim.bo.filetype == 'help' then vim.cmd('help ' .. vim.fn.expand('')) else vim.cmd('Man ' .. vim.fn.expand('')) end end) -- Remove right-click menu items vim.cmd.aunmenu({ "PopUp.-1-", }) vim.cmd.aunmenu({ "PopUp.How-to\\ disable\\ mouse", }) -- Insert-mode Emacs bindings vim.keymap.set('i', '', '') vim.keymap.set('i', '', '') vim.keymap.set('i', '', '^') vim.keymap.set('i', '', '$') -- vim.keymap.set('i', '', 'x') -- Overrides de-indent vim.keymap.set('i', '', 'w') vim.keymap.set('i', '', 'b') vim.keymap.set('i', '', 'dw') vim.keymap.set('i', '', 'db') -- Command-mode Emacs bindings vim.keymap.set('c', '', '') vim.keymap.set('c', '', '') vim.keymap.set('c', '', '') vim.keymap.set('c', '', '') vim.keymap.set('c', '', '') vim.keymap.set('c', '', '') vim.keymap.set('c', '', '') vim.keymap.set('c', '', '') vim.keymap.set('c', '', '') vim.keymap.set('c', '', '') vim.keymap.set('c', '', '') vim.keymap.set('n', 've', function() if vim.o.virtualedit == 'all' then vim.o.virtualedit = 'block' else vim.o.virtualedit = 'all' end end) -- Removed bindings vim.keymap.set('n', 'gr', '') -- Default bindings that are good to know: -- insert mode: -- - indent, see :h i_CTRL-T -- - un-indent, see :h i_CTRL-D -- normal mode: -- H/M/L - Jump to highest/middle/lowest line in window. -- - scroll window down lines, see :h CTRL-E -- - scroll window up lines, see :h CTRL-Y -- - Increment -- - Decrement -- H - Move window to the left -- J - Move window down -- K - Move window up -- L - Move window to the right -- gq{motion} - format word-wrap of the line that {motion} moves over -- {Visual}gq - format word-wrap of the visually selected area -- gqq - format word-wrap of the current line -- commands: -- :make - execute makeprg with given args, and put the output in -- quickfix list -- :grep - execute grepprg with given args, and put the results in -- quickfix list -- :cex {expr} - Create a quickfix list using the result of {expr} and -- jump to the first error. For example: -- :cex system('make') -- :cgete {expr} - same as :cex but don't jump to the first error -- :copen - open quickfix list -- :cdo {cmd} - execute {cmd} in each valid entry in the quickfix list. -- works like this: -- :cfirst -- :{cmd} -- :cnext -- :{cmd} -- etc. -- :cfdo {cmd} - same as :cdo but on each file in quickfix list -- :cn - go to the next error in quickfix list that includes a file name -- :cp - go to the previous error in quickfix list that includes a file name -- :cc [num] - go to the specified error in quickfix list -- @: - repeat last command -- :s/foo/bar/ - substitute the first match of foo with bar in the current line -- :s/foo/bar/g - same as above but for all matches in the current line -- :%s/foo/bar/g - same as above, but for all lines in buffer -- :%s/foo/bar/gc - same as above but asking for confirmation on each match -- :lua << EOF - run a lua snippet using lua-heredoc syntax -- local tbl = {1, 2, 3} -- for k, v in ipairs(tbl) do -- print(v) -- end -- EOF -- :diffsplit - open diff split