local set = vim.keymap.set set("n", "so", ":call opdavies#save_and_exec()") -- Format paragraphs to an 80 character line length. set("n", "g", "gqap") set("x", "g", "gqa") -- Make the current file executable set("n", "x", ":!chmod +x %") -- Yank from the current column to the end of the line set("n", "Y", "yg$") -- Keep things centred set("n", "n", "nzzzv") set("n", "N", "Nzzzv") -- Disable arrow keys set("v", "", "") set("v", "", "") set("v", "", "") set("v", "", "") set("n", "", ":silent !tmux neww t", { noremap = true, silent = true }) -- Easy insertion of a trailing ; or , from insert mode set("i", ",,", "A,") set("i", ";;", "A;") set("n", "ga", "(EasyAlign)") set("x", "ga", "(EasyAlign)") -- Focus on the current buffer. set("n", "-", ":wincmd _:wincmd |", { noremap = true, silent = true }) -- Automatically resize buffers. set("n", "=", ":wincmd =", { noremap = true, silent = true }) -- Move line(s) up and down. local opts = { noremap = true, silent = true } set("i", "", ":m .+1==gi", opts) set("i", "", ":m .-2==gi", opts) set("n", "", ":m .+1==", opts) set("n", "", ":m .-2==", opts) set("v", "", ":m '>+1gv=gv", opts) set("v", "", ":m '<-2gv=gv", opts) -- Re-centre when navigating. set("n", "#", "#zz", opts) set("n", "%", "%zz", opts) set("n", "*", "*zz", opts) set("n", "", "zz", opts) set("n", "", "zz", opts) set("n", "", "zz", opts) set("n", "", "zz", opts) set("n", "G", "Gzz", opts) set("n", "N", "Nzz", opts) set("n", "gg", "ggzz", opts) set("n", "n", "Nzz", opts) set("n", "{", "{zz", opts) set("n", "}", "}zz", opts) -- Clears hlsearch after doing a search, otherwise just does normal stuff vim.cmd [[ nnoremap {-> v:hlsearch ? ":nohl\" : "\"}() ]] -- Quicker macro playback. set("n", "Q", "@qj") set("x", "Q", ":norm @q") -- Easier navigation between splits. set("n", "", "") set("n", "", "") set("n", "", "") set("n", "", "")