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
82
83
84
85
86
87
88
89
|
local map = vim.keymap.set
-- Leader
vim.g.mapleader = " "
vim.g.maplocalleader = ","
local function verbose_toggle(value, name)
local toggle = value == false
if toggle == true then
print("Enabled " .. name .. ".")
else
print("Disabled " .. name .. ".")
end
return toggle
end
-- open config
map("n", " c", function()
vim.cmd("cd ~/.config/nvim")
vim.cmd("e " .. "init.lua")
end, { desc = "Open neovim config file" })
-- insert navigation
map("i", "<C-a>", "<C-o>I", { noremap = true })
map("i", "<C-e>", "<C-o>A", { noremap = true })
-- buffers
map("n", " q", "<cmd>q!<cr>", { noremap = true })
map("n", " Q", "<cmd>qa!<cr>", { noremap = true })
map("n", "!", "<cmd>sp<CR><cmd>term<CR>", { desc = "Open terminal" })
map("n", "<M-b>", "<cmd>make<cr>", { desc = "Make" })
-- better indenting
map("v", "<", "<gv")
map("v", ">", ">gv")
map("v", "J", ":m '>+1<CR>gv=gv", { desc = "Move selected text up" })
map("v", "K", ":m '<-2<CR>gv=gv", { desc = "Move selected text down" })
map("x", " p", [["_dP]], { desc = "Paste while keeping the registry" })
map("n", "n", "nzzzv", { desc = "Keep cursor in middle with search" })
map("n", "N", "Nzzzv", { desc = "Keep cursor in middle with search" })
map("n", "J", "mzJ`z", { desc = "Move up next line with space in between" })
-- allow for use of system clipboard fast
map({ "n", "v" }, " y", [["+y]])
map("n", " Y", [["+Y]])
map({ "n", "v" }, " P", [["+p]])
-- hide all
local hidden = true -- flag
vim.api.nvim_create_user_command("Hide", function()
hidden = hidden == false
vim.opt.showmode = hidden
vim.opt.ruler = hidden
vim.opt.showcmd = hidden
vim.opt.laststatus = hidden and 2 or 0
end, {})
map("n", " x", "!cx %", { desc = "Toggle file as executable" })
map("n", " w", "<cmd>write<cr>", { noremap = true })
map("n", ",s", function()
vim.cmd.source()
print("Sourced.")
end, { noremap = true })
-- spelling
map("n", " ts", function()
vim.o.spell = verbose_toggle(vim.o.spell, "spelling")
end, { noremap = true, desc = "Toggle spelling" })
map("n", "<c-s>g", "z=1<cr><cr>", { noremap = true, desc = "Correct word" })
map("n", " td", function()
vim.diagnostic.enable(verbose_toggle(vim.diagnostic.is_enabled(), "diagnostics"))
end, { desc = "Toggle diagnostics" })
-- editing
map("n", " sf", ":%s/\\<<C-R><C-W>\\>//gc<Left><Left><Left>", { desc = "Replace word under cursor in file" })
map("n", " sl", ":s/\\<<C-R><C-W>\\>//g<Left><Left>", { desc = "Replace word under cursor on current line" })
map("n", "]q", "<cmd>cn<cr>", { desc = "Next item in quickfix", silent = true })
map("n", "[q", "<cmd>cp<cr>", { desc = "Next item in quickfix", silent = true })
vim.api.nvim_create_user_command("Scratch", function()
vim.cmd([[
e scratch
setlocal buftype=nofile
setlocal bufhidden=hide
setlocal noswapfile
]])
end, {})
|