.dotfiles/nvim/lua/keymaps.lua

115 lines
4.7 KiB
Lua

local utils = require("utils")
local g = vim.g
g.mapleader = " "
g.maplocalleader = " "
local move_up = { "v:count || mode(1)[0:1] == \"no\" ? \"k\" : \"gk\"", { expr = true } }
local move_down = { "v:count || mode(1)[0:1] == \"no\" ? \"j\" : \"gj\"", { expr = true } }
for _, mode_mapping in ipairs({
{
"n",
{
{ "K", "<Nop>", },
{ "grn", "<Nop>", },
{ "gra", "<Nop>", },
{ "grr", "<Nop>", },
{ "gri", "<Nop>", },
{ "gO", "<Nop>", },
{ "grt", "<Nop>", },
-- Navigation
{ "<C-Left>", "<C-w>h", },
{ "<C-Down>", "<C-w>j", },
{ "<C-Up>", "<C-w>k", },
{ "<C-Right>", "<C-w>l", },
{ "<C-h>", "<C-w>h", },
{ "<C-j>", "<C-w>j", },
{ "<C-k>", "<C-w>k", },
{ "<C-l>", "<C-w>l", },
-- Window
{ "<C-q>", "<C-w>q", },
-- Disable current highlights
{ "<Esc>", "<cmd> noh <CR>", },
-- Copies the entire file
{ "<C-c>", ":%y+<CR>", { silent = true } },
-- Allow moving the cursor through wrapped lines with <Up> and <Down>
-- http://www.reddit.com/r/vim/comments/2k4cbr/problem_with_gj_and_gk/
-- empty mode is same as using <cmd> :map
-- also don't use g[j|k] when in operator pending mode,
-- so it doesn't alter d, y or c behaviour
{ "<Up>", move_up[1], move_up[2], },
{ "<Down>", move_down[1], move_down[2], },
{ "j", move_down[1], move_down[2], },
{ "k", move_up[1], move_up[2], },
-- Maps to remove
{ "<C-z>", "<Nop>", },
{ "[d", function()
vim.diagnostic.jump({ count = -1, float = false })
end },
{ "]d", function()
vim.diagnostic.jump({ count = 1, float = false })
end },
{ "gcp", function()
for _, cmd in ipairs({
"\"zyy",
"gcc",
"\"zp",
}) do
vim.cmd.normal({ cmd })
end
end },
{ "<C-t>", ":$tabnew %<CR>", { silent = true }, },
{ "<F15>", ":1tabn<CR>", { silent = true }, },
{ "<F16>", ":2tabn<CR>", { silent = true }, },
{ "<F17>", ":3tabn<CR>", { silent = true }, },
{ "<F18>", ":4tabn<CR>", { silent = true }, },
{ "<F19>", ":5tabn<CR>", { silent = true }, },
{ "<F20>", ":6tabn<CR>", { silent = true }, },
{ "<F21>", ":7tabn<CR>", { silent = true }, },
{ "<F22>", ":8tabn<CR>", { silent = true }, },
{ "z/", '/\\%><C-r>=line("w0")-1<CR>l\\%<<C-r>=line("w$")+1<CR>l', { silent = false, desc = "Search in viewport" }, },
{ "z?", '?\\%><C-r>=line("w0")-1<CR>l\\%<<C-r>=line("w$")+1<CR>l', { silent = false, desc = "Search in viewport" }, },
{ "<leader>u", ":Undotree<CR>", { silent = true } },
}
},
{
"v",
{
{ "<Up>", move_up[1], move_up[2], },
{ "<Down>", move_down[1], move_down[2], },
{ "j", move_down[1], move_down[2], },
{ "k", move_up[1], move_up[2], },
{ "<tab>", ">gv", },
{ "<S-tab>", "<gv", },
{ "/", "<C-\\><C-n>`</\\%V", },
{ "?", "<C-\\><C-n>`>?\\%V", },
},
},
{
"x",
{
{ "<Up>", move_up[1], move_up[2], },
{ "<Down>", move_down[1], move_down[2], },
{ "j", move_down[1], move_down[2], },
{ "k", move_up[1], move_up[2], },
{ "p", "p:let @+=@0<CR>:let @\"=@0<CR>", { silent = true }, },
}
},
{
"t",
{
{ "<C-q>", "<C-\\><C-N>", },
}
},
}) do
utils.set_keymap_list(mode_mapping[2], mode_mapping[1])
end