vim.api.nvim_set_keymap('n', '<Space>v', 'p', { noremap = true, silent = true })
vim.api.nvim_set_keymap('c', '<Space>v', '<C-r>"<CR>', { noremap = true, silent = true })

-- select all
vim.keymap.set('n', '<Space>sa', 'gg0vG$')

vim.keymap.set('n', '<Space>cp', ':NoNeckPain<CR>')

vim.keymap.set('n', '<M-d>', '<C-d>zz')
vim.keymap.set('n', '<M-u>', '<C-u>zz')
vim.keymap.set('n', '<M-y>', '<C-y>kzz')
vim.keymap.set('n', '<M-e>', '<C-e>jzz')

vim.keymap.set('i', 'jk', '<esc>')
vim.keymap.set('n', '<M-c>', '<esc>', { silent=true })

vim.keymap.set('n', '<C-n>', ':bn<CR>')
vim.keymap.set('n', '<C-p>', ':bp<CR>')

vim.keymap.set('v', 'p', 'P')
vim.keymap.set('n', '"', ':noh<CR>', { silent=true })

vim.keymap.set('n', '<S-j>', ':vertical resize +5<cr>')
vim.keymap.set('n', '<S-k>', ':vertical resize -5<cr>')
vim.keymap.set('n', '<S-h>', ':resize +5<cr>')
vim.keymap.set('n', '<S-l>', ':resize -5<cr>')

vim.keymap.set('n', '<C-J>', '<C-W><C-J>')
vim.keymap.set('n', '<C-K>', '<C-W><C-K>')
vim.keymap.set('n', '<C-L>', '<C-W><C-L>')
vim.keymap.set('n', '<C-H>', '<C-W><C-H>')

vim.keymap.set('n', '<Space>ll', 'zz')

vim.keymap.set('n', '<C-g>', '<esc>')
vim.keymap.set('i', '<C-g>', '<esc>')
vim.keymap.set('v', '<C-g>', '<esc>')

-- save
vim.keymap.set('n', '<Space>8', ':w<CR>')
vim.keymap.set('n', '<Space>2', ':q<CR>')
-- exit without save
vim.keymap.set('n', '<Space>6', ':q!<CR>')

-- move
vim.keymap.set('n', '<Space>7', '_')
vim.keymap.set('n', '<Space>9', '$')

vim.keymap.set('v', '<Space>7', '_')
vim.keymap.set('v', '<Space>9', '$h')

vim.keymap.set('n', '.', '<C-d>zz<CR>')
vim.keymap.set('n', ',', '<C-u>zz<CR>')

vim.keymap.set('v', '.', '<C-d>zz<CR>')
vim.keymap.set('v', ',', '<C-u>zz<CR>')

-- split
vim.keymap.set('n', '<Space>sh', ':vs<CR>')
vim.keymap.set('n', '<Space>sv', ':sp<CR>')
