-- =========================================================================== -- Key Mapping -- =========================================================================== -- Function to cut down config boilerplate local key = function(mode, key_sequence, action, params) params = params or {} params["noremap"] = true vim.api.nvim_set_keymap(mode, key_sequence, action, params) end -- Remap space as leader key key("", "", "", { silent = true }) vim.g.mapleader = " " vim.g.maplocalleader = " " -- Keep selection when changing indentation key("v", "<", "", ">gv") -- Clear search register key("n", "", ":noh", { silent = true }) -- Shuffle lines around key("n", "", ":m .+1==") key("n", "", ":m .-2==") key("i", "", ":m .+1==gi") key("i", "", ":m .-2==gi") key("v", "", ":m '>+1gv=gv") key("v", "", ":m '<-2gv=gv") -- Telescope (fuzzy finder) key("n", "k", ":Telescope keymaps") key("n", "/", ":Telescope live_grep") key("n", "ff", ":Telescope find_files") key("n", "fp", ":Telescope git_files") key("n", "fN", "lua find_notes()") key("n", "N", "lua grep_notes()") key("n", "fD", "lua find_downloads()") key("n", "fa", ":Telescope file_browser") key("n", "fw", ":Telescope grep_string") key("n", "wt", ":Telescope tmux sessions") key("n", "ww", ":Telescope tmux windows") key("n", "w/", ":Telescope tmux pane_contents") key("n", "fz", ":Telescope zoxide list") key("n", "b", ":Telescope buffers") key("n", "hh", ":Telescope help_tags") key("n", "fr", ":Telescope oldfiles") key("n", "cc", ":Telescope commands") key("n", "cr", "lua command_history()") key("n", "y", "lua clipboard_history()") key("i", "", "lua clipboard_history()") key("n", "s", ":Telescope current_buffer_fuzzy_find") key("n", "gc", ":Telescope git_commits") key("n", "gf", ":Telescope git_bcommits") key("n", "gb", ":Telescope git_branches") key("n", "gs", ":Telescope git_status") key("n", "", "lua choose_project()") -- Buffer tabs (tmux interferes) -- key("n", "", "gt") -- key("i", "", "gt") -- key("n", "", "gT") -- key("i", "", "gT") -- LSP key("n", "gd", "lua vim.lsp.buf.definition()", { silent = true }) key("n", "gT", "lua vim.lsp.buf.type_definition()", { silent = true }) key("n", "gi", "lua vim.lsp.buf.implementation()", { silent = true }) key("n", "gh", "lua vim.lsp.buf.hover()", { silent = true }) key("n", "gr", "Telescope lsp_references", { silent = true }) key("n", "R", "lua vim.lsp.buf.rename()", { silent = true }) key("n", "]e", "lua vim.diagnostic.goto_next()", { silent = true }) key("n", "[e", "lua vim.diagnostic.goto_prev()", { silent = true }) key("n", "e", "lua vim.lsp.diagnostic.show_line_diagnostics()", { silent = true }) key("n", "E", "lua vim.lsp.buf.code_action()", { silent = true }) -- File commands key("n", "q", ":quit") key("n", "Q", ":quitall") key("n", "fs", ":write") key("n", "fd", ":lcd %:p:h", { silent = true }) key("n", "fu", ":lcd ..", { silent = true }) key("n", "", ":b#", { silent = true }) key("n", "gr", ":!gh repo view -w", { silent = true }) key("n", "tt", [[exe 'edit $NOTES_PATH/journal/'.strftime("%Y-%m-%d_%a").'.md']]) key("n", "jj", ":!journal:e") -- Window commands key("n", "wv", ":vsplit") key("n", "wh", ":split") key("n", "wm", ":only") -- Tabularize key("", "ta", ":Tabularize /") key("", "t#", ":Tabularize /#") key("", "tl", ":Tabularize /---") -- Vimrc editing key("n", "fv", ":edit $DOTS/nvim.configlink/init.lua") key("n", "rr", ":luafile $MYVIMRC") key("n", "rp", ":luafile $MYVIMRC:PackerInstall:") key("n", "rc", ":luafile $MYVIMRC:PackerCompile") -- Keep cursor in place key("n", "n", "nzz") key("n", "N", "Nzz") key("n", "J", "mzJ`z") --- Mark and jump back to it -- Add undo breakpoints key("i", ",", ",u") key("i", ".", ".u") key("i", "!", "!u") key("i", "?", "?u") -- Other key("t", "", "") --- Exit terminal mode key("n", "", ":noh", { silent = true }) --- Clear search in VimWiki key("n", "Y", "y$") --- Copy to end of line key("v", "", "y:%s/+//gc") --- Substitute selected key("v", "D", "y'>gp") --- Duplicate selected