-- 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", "", function() return close_pum() or "" end, { expr = true }) vim.keymap.set("i", "", function() return close_pum() or "$" 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", "") -- 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', '', '$') -- Done in previous mapping above -- 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', '', '') -- Default bindings that are good to know: -- insert mode: -- - indent, see :h i_CTRL-T -- - un-indent, see :h i_CTRL-D -- normal mode: -- - 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 -- commands: -- :make - execute makeprg with given args -- :copen - open quickfix list -- :cdo {cmd} - execute {cmd} in each valid entry in the quickfix list. -- works like this: -- :cfirst -- :{cmd} -- :cnext -- :{cmd} -- etc. -- :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