aboutsummaryrefslogtreecommitdiff
path: root/.config/nvim/lua/map.lua
blob: ced64d73e54d4194a022105308c92f317f00f331 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
vim.g.mapleader = " "

local nv = {"n", "v"}

local function definepairs(replacement, char)
  vim.keymap.set("o", "i" .. replacement, "i" .. char, {})
  vim.keymap.set("o", "a" .. replacement, "a" .. char, {})
end

definepairs("b", "(")
definepairs("s", "\"")
definepairs("q", "'")
definepairs("t", "{")
definepairs("r", "[")
definepairs("a", "<")

vim.keymap.set(nv, "gm", "gM", {})
vim.keymap.set(nv, "gM", "gMi", {})

-- Moving between windows
vim.keymap.set(nv, "<C-h>", "<C-w>h", {})
vim.keymap.set(nv, "<C-j>", "<C-w>j", {})
vim.keymap.set(nv, "<C-k>", "<C-w>k", {})
vim.keymap.set(nv, "<C-l>", "<C-w>l", {})

-- Same, but for terminal
vim.keymap.set("t", "<C-h>", "<C-\\><C-n><C-w>h", {})
vim.keymap.set("t", "<C-j>", "<C-\\><C-n><C-w>j", {})
vim.keymap.set("t", "<C-k>", "<C-\\><C-n><C-w>k", {})
vim.keymap.set("t", "<C-l>", "<C-\\><C-n><C-w>l", {})

-- Moving windows
vim.keymap.set(nv, "<C-w>h", "<C-w>H", {})
vim.keymap.set(nv, "<C-w>j", "<C-w>J", {})
vim.keymap.set(nv, "<C-w>k", "<C-w>K", {})
vim.keymap.set(nv, "<C-w>l", "<C-w>L", {})

-- Resizing windows
vim.keymap.set(nv, "<C-->", "<C-w>-", {})
vim.keymap.set(nv, "<C-=>", "<C-w>+", {})
vim.keymap.set(nv, "<C-,>", "<C-w><", {})
vim.keymap.set(nv, "<C-.>", "<C-w>>", {})

-- Make exiting insert mode in terminal mode easier
vim.keymap.set("t", "<ESC>", "<C-\\><C-n>", {})

-- Make it harder to accidentally undo
vim.keymap.set(nv, "<C-u>", "u", {})
vim.keymap.set(nv, "u", "<nop>", {})

-- Center when moving around at high speeds
vim.keymap.set(nv, "<A-k>", "<C-u>zz", {})
vim.keymap.set(nv, "<A-j>", "<C-d>zz", {})
vim.keymap.set(nv, "G", "Gzz", {})

-- Delete line content. I didn't do ddO because that would extend comments if
-- you were just above one.
vim.keymap.set("n", "dc", "cc<ESC>", {})

-- Make going to the end of a line as easy as going to the beginning
vim.keymap.set({"n", "v", "o"}, "+", "$", {})

-- Allow yanking to system clipboard
vim.keymap.set(nv, "<C-c>", "\"+y", {})
vim.keymap.set(nv, "<C-v>", "\"+p", {})

-- Commands
vim.keymap.set(nv, "<leader>c", "<CMD>set invhlsearch<CR>", {silent=true})
vim.keymap.set(nv, "<leader>e", "<CMD>Oil<CR>", {silent=true})
vim.keymap.set(nv, "<leader>t", function()
  vim.cmd("split")
  vim.cmd("term")
end, {silent=true})

-- Common typo with me
vim.api.nvim_create_user_command("W",   "w",   {bang=true})
vim.api.nvim_create_user_command("Wa",  "wa",  {bang=true})
vim.api.nvim_create_user_command("Wq",  "wq",  {bang=true})
vim.api.nvim_create_user_command("Wqa", "wqa", {bang=true})
vim.api.nvim_create_user_command("Q",   "q",   {bang=true})
vim.api.nvim_create_user_command("Qa",  "qa",  {bang=true})