-- =========================================================================== -- Key Mapping -- =========================================================================== -- Function to cut down config boilerplate local key = function(mode, key_sequence, action, params) params = params or {} vim.keymap.set(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) local telescope = require("telescope.builtin") local telescope_ext = require("telescope").extensions 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", find_notes) key("n", "N", grep_notes) key("n", "fD", find_downloads) key("n", "fa", telescope_ext.file_browser.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_ext.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", command_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) -- Buffer tabs (tmux interferes) -- key("n", "", "gt") -- key("i", "", "gt") -- key("n", "", "gT") -- key("i", "", "gT") -- LSP key("n", "gd", vim.lsp.buf.definition, { silent = true }) key("n", "gT", vim.lsp.buf.type_definition, { silent = true }) key("n", "gi", vim.lsp.buf.implementation, { silent = true }) key("n", "gh", vim.lsp.buf.hover, { silent = true }) key("n", "gr", telescope.lsp_references, { silent = true }) key("n", "R", vim.lsp.buf.rename, { silent = true }) key("n", "]e", vim.diagnostic.goto_next, { silent = true }) key("n", "[e", vim.diagnostic.goto_prev, { silent = true }) key("n", "e", vim.lsp.diagnostic.show_line_diagnostics, { silent = true }) key("n", "E", 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