From b51f1ae28924a752258e7607fbc3210f9b18eaac Mon Sep 17 00:00:00 2001 From: Gustaf Rydholm Date: Thu, 22 Jul 2021 00:08:36 +0200 Subject: Updates based on Chris's lunarvim --- .config/nvim/lua/keymappings.lua | 166 +++++++++++++++++++++++++-------------- 1 file changed, 106 insertions(+), 60 deletions(-) (limited to '.config/nvim/lua/keymappings.lua') diff --git a/.config/nvim/lua/keymappings.lua b/.config/nvim/lua/keymappings.lua index 4dfcbb0..e8e3f42 100644 --- a/.config/nvim/lua/keymappings.lua +++ b/.config/nvim/lua/keymappings.lua @@ -1,69 +1,115 @@ --- better window movement -vim.api.nvim_set_keymap("n", "", "h", { silent = true }) -vim.api.nvim_set_keymap("n", "", "j", { silent = true }) -vim.api.nvim_set_keymap("n", "", "k", { silent = true }) -vim.api.nvim_set_keymap("n", "", "l", { silent = true }) - --- Terminal window navigation -vim.api.nvim_set_keymap("t", "", "h", {silent = true, noremap = true}) -vim.api.nvim_set_keymap("t", "", "j", {silent = true, noremap = true}) -vim.api.nvim_set_keymap("t", "", "k", {silent = true, noremap = true}) -vim.api.nvim_set_keymap("t", "", "l", {silent = true, noremap = true}) -vim.api.nvim_set_keymap("i", "", "h", {silent = true, noremap = true}) -vim.api.nvim_set_keymap("i", "", "j", {silent = true, noremap = true}) -vim.api.nvim_set_keymap("i", "", "k", {silent = true, noremap = true}) -vim.api.nvim_set_keymap("i", "", "l", {silent = true, noremap = true}) -vim.api.nvim_set_keymap("t", "", "", {silent = true, noremap = true}) - --- TODO fix this --- resize with arrows -if vim.fn.has("mac") == 1 then - vim.api.nvim_set_keymap("n", "", ":resize -2", { silent = true }) - vim.api.nvim_set_keymap("n", "", ":resize +2", { silent = true }) - vim.api.nvim_set_keymap("n", "", ":vertical resize -2", { silent = true }) - vim.api.nvim_set_keymap("n", "", ":vertical resize +2", { silent = true }) -else - vim.api.nvim_set_keymap("n", "", ":resize -2", { silent = true }) - vim.api.nvim_set_keymap("n", "", ":resize +2", { silent = true }) - vim.api.nvim_set_keymap("n", "", ":vertical resize -2", { silent = true }) - vim.api.nvim_set_keymap("n", "", ":vertical resize +2", { silent = true }) -end +local utils = require "utils" + +local opts = { + nnoremap = { noremap = true, silent = true }, + inoremap = { noremap = true, silent = true }, + vnoremap = { noremap = true, silent = true }, + xnoremap = { noremap = true, silent = true }, + generic = { silent = true }, +} + +local default_keys = { + insert_mode = { + -- I hate escape + { "jk", "" }, + { "kj", "" }, + { "jj", "" }, + -- Move current line / block with Alt-j/k ala vscode. + { "", ":m .+1==gi" }, + { "", ":m .-2==gi" }, + -- navigation + { "", "h" }, + { "", "j" }, + { "", "k" }, + { "", "l" }, + }, + + normal_mode = { + -- Better window movement + { "", "h" }, + { "", "j" }, + { "", "k" }, + { "", "l" }, + + -- Resize with arrows + { "", ":resize -2" }, + { "", ":resize +2" }, + { "", ":vertical resize -2" }, + { "", ":vertical resize +2" }, + + -- Tab switch buffer + -- { "", ":bnext" }, + -- { "", ":bprevious" }, + + -- Move current line / block with Alt-j/k a la vscode. + { "", ":m .+1==" }, + { "", ":m .-2==" }, --- better indenting -vim.api.nvim_set_keymap("v", "<", "", ">gv", { noremap = true, silent = true }) + -- QuickFix + { "]q", ":cnext" }, + { "[q", ":cprev" }, + { "", ":call QuickFixToggle()" }, --- I hate escape -vim.api.nvim_set_keymap("i", "jk", "", { noremap = true, silent = true }) -vim.api.nvim_set_keymap("i", "kj", "", { noremap = true, silent = true }) -vim.api.nvim_set_keymap("i", "jj", "", { noremap = true, silent = true }) + -- {'', 'compe#complete()', {noremap = true, silent = true, expr = true}}, + }, --- Tab switch buffer -vim.api.nvim_set_keymap("n", "", ":bnext", { noremap = true, silent = true }) -vim.api.nvim_set_keymap("n", "", ":bprevious", { noremap = true, silent = true }) + term_mode = { + -- Terminal window navigation + { "", "h" }, + { "", "j" }, + { "", "k" }, + { "", "l" }, + }, --- Move selected line / block of text in visual mode -vim.api.nvim_set_keymap("x", "K", ":move '<-2gv-gv", { noremap = true, silent = true }) -vim.api.nvim_set_keymap("x", "J", ":move '>+1gv-gv", { noremap = true, silent = true }) + visual_mode = { + -- Better indenting + { "<", "", ">gv" }, --- Move current line / block with Alt-j/k ala vscode. -vim.api.nvim_set_keymap("n", "", ":m .+1==", { noremap = true, silent = true }) -vim.api.nvim_set_keymap("n", "", ":m .-2==", { noremap = true, silent = true }) -vim.api.nvim_set_keymap("i", "", ":m .+1==gi", { noremap = true, silent = true }) -vim.api.nvim_set_keymap("i", "", ":m .-2==gi", { noremap = true, silent = true }) -vim.api.nvim_set_keymap("x", "", ":m '>+1gv-gv", { noremap = true, silent = true }) -vim.api.nvim_set_keymap("x", "", ":m '<-2gv-gv", { noremap = true, silent = true }) + -- { "p", '"0p', { silent = true } }, + -- { "P", '"0P', { silent = true } }, + }, --- QuickFix -vim.api.nvim_set_keymap("n", "]q", ":cnext", { noremap = true, silent = true }) -vim.api.nvim_set_keymap("n", "[q", ":cprev", { noremap = true, silent = true }) + visual_block_mode = { + -- Move selected line / block of text in visual mode + { "K", ":move '<-2gv-gv" }, + { "J", ":move '>+1gv-gv" }, --- Better nav for omnicomplete -vim.cmd 'inoremap ("\\")' -vim.cmd 'inoremap ("\\")' + -- Move current line / block with Alt-j/k ala vscode. + { "", ":m '>+1gv-gv" }, + { "", ":m '<-2gv-gv" }, + }, +} + +if vim.fn.has "mac" == 1 then + -- TODO: fix this + default_keys.normal_mode[5][1] = "" + default_keys.normal_mode[6][1] = "" + default_keys.normal_mode[7][1] = "" + default_keys.normal_mode[8][1] = "" +end + +if O.keys.leader_key == " " or O.keys.leader_key == "space" then + vim.g.mapleader = " " +else + vim.g.mapleader = O.keys.leader_key +end + +local function get_user_keys(mode) + if O.keys[mode] == nil then + return default_keys[mode] + else + return O.keys[mode] + end +end -vim.cmd 'vnoremap p "0p' -vim.cmd 'vnoremap P "0P' +utils.add_keymap_normal_mode(opts.nnoremap, get_user_keys "normal_mode") +utils.add_keymap_insert_mode(opts.inoremap, get_user_keys "insert_mode") +utils.add_keymap_visual_mode(opts.vnoremap, get_user_keys "visual_mode") +utils.add_keymap_visual_block_mode(opts.xnoremap, get_user_keys "visual_block_mode") +utils.add_keymap_term_mode(opts.generic, get_user_keys "term_mode") --- Toggle the QuickFix window -vim.api.nvim_set_keymap("", "", ":call QuickFixToggle()", { noremap = true, silent = true }) +-- navigate tab completion with and +-- runs conditionally +vim.cmd 'inoremap pumvisible() ? "\\" : "\\"' +vim.cmd 'inoremap pumvisible() ? "\\" : "\\"' -- cgit v1.2.3-70-g09d2