feat: new keymaps

This commit is contained in:
Tomas Mirchev 2025-10-22 02:53:27 +03:00
parent 804832e0c3
commit d7525c88d4
3 changed files with 69 additions and 40 deletions

View File

@ -47,3 +47,9 @@ vim.api.nvim_create_autocmd({ 'WinLeave', 'InsertEnter' }, {
end end
end, end,
}) })
-- Removes trailing whitespace before saving
vim.api.nvim_create_autocmd({ 'BufWritePre' }, {
pattern = '*',
command = [[%s/\s\+$//e]],
})

View File

@ -12,9 +12,9 @@ if vim.env.CONTAINER then
} }
end end
vim.schedule(function() -- vim.schedule(function()
vim.opt.clipboard = 'unnamedplus' -- vim.opt.clipboard = 'unnamedplus'
end) -- end)
-- TEMP: Check if it helps with edge cases -- TEMP: Check if it helps with edge cases
vim.api.nvim_create_user_command('FixClipboard', function() vim.api.nvim_create_user_command('FixClipboard', function()

View File

@ -1,54 +1,77 @@
local map = vim.keymap.set -- Helper functions
local function map(mode, lhs, rhs)
vim.keymap.set(mode, lhs, rhs, { silent = true })
end
map('n', '<leader>q', vim.diagnostic.setloclist) local function cmd(str)
return '<cmd>' .. str .. '<CR>'
end
map({ 'i', 'c' }, 'jk', '<Esc>') -- QOL
map('n', '<Esc>', '<cmd>nohlsearch<CR>') map('i', 'jk', '<Esc>')
map('n', '<Esc>', cmd('nohlsearch'))
map('n', 'q:', '<nop>')
-- Prevent overriding the register vim.keymap.set('n', 'J', 'mzJ`z')
map('n', 'x', '"_x') vim.keymap.set('n', 'n', 'nzzzv')
vim.keymap.set('n', 'N', 'Nzzzv')
-- Window Navigation vim.keymap.set('x', 'J', ":m '>+1<CR>gv=gv")
vim.keymap.set('x', 'K', ":m '<-2<CR>gv=gv")
vim.keymap.set('n', '<leader>s', [[:%s/\<<C-r><C-w>\>/<C-r><C-w>/g<Left><Left><Left>]])
-- Proper registers
map('x', '<leader>p', '"_dP')
map({ 'n', 'x' }, '<leader>y', '"+y')
map('n', '<leader>Y', '"+y$')
map({ 'n', 'x' }, '<leader>d', '"_d')
map({ 'n', 'x' }, 'x', '"_x')
-- Window navigation
map('n', '<C-h>', '<C-w>h') map('n', '<C-h>', '<C-w>h')
map('n', '<C-l>', '<C-w>l') map('n', '<C-l>', '<C-w>l')
map('n', '<C-j>', '<C-w>j') map('n', '<C-j>', '<C-w>j')
map('n', '<C-k>', '<C-w>k') map('n', '<C-k>', '<C-w>k')
-- Tab management -- Tab management
map('n', '<Leader>tn', ':tabnew<CR>') map('n', ']t', cmd('tabnext'))
map('n', '<Leader>tc', ':tabclose<CR>') map('n', '[t', cmd('tabprevious'))
map('n', '<Leader>tl', ':tabnext<CR>') map('n', '<leader>tt', cmd('tabnew'))
map('n', '<Leader>th', ':tabprevious<CR>') map('n', '<leader>tn', cmd('tabnew'))
map('n', '<Leader>tm.', ':tabmove +1<CR>') map('n', '<leader>tc', cmd('tabclose'))
map('n', '<Leader>tm,', ':tabmove -1<CR>') map('n', '<Leader>tl', cmd('tabmove +1'))
map('n', '<Leader>th', cmd('tabmove -1'))
for i = 1, 9 do for i = 1, 9 do
map('n', string.format('<Leader>%d', i), string.format('%dgt', i)) map('n', string.format('<Leader>t%d', i), string.format('%dgt', i))
end end
-- Buffer Management -- Buffer management
-- map('n', '<Leader>bl', ':ls<CR>') map('n', ']b', cmd('bnext'))
-- map('n', '<Leader>bd', ':bdelete<CR>') map('n', '[b', cmd('bprevious'))
-- map('n', ']b', ':bnext<CR>') map('n', '<leader>bl', cmd('ls'))
-- map('n', '[b', ':bprevious<CR>') map('n', '<leader>bb', '<C-^>') -- toggle between buffers
-- map('n', '<Leader>bb', ':b<Space>') map('n', '<leader>bd', cmd('bdelete'))
-- map('n', '<Leader>bo', ':bufdo bd|1bd<CR>') map('n', '<leader>bo', cmd('%bd|e#')) -- close all except current
-- Terminal -- Terminal
map('n', '<leader>tt', ':TermDefault<CR>') map('n', '<leader>xx', cmd('TermDefault'))
map('n', '<leader>tr', ':TermRelative<CR>') map('n', '<leader>xr', cmd('TermRelative'))
map('n', '<leader>ts', ':TermSplit<CR>') map('n', '<leader>xs', cmd('TermSplit'))
map('n', '<leader>tv', ':TermVSplit<CR>') map('n', '<leader>xv', cmd('TermVSplit'))
map('t', '<Esc>', '<C-\\><C-n>')
-- Terminal mode mappings map('t', '<C-w>', '<C-\\><C-n><C-w>')
local tn = '<C-\\><C-n>' map('t', '<C-w>c', '<C-\\><C-n>:bd!<CR>')
map('t', '<Esc>', tn)
map('t', 'jk', tn)
map('t', '<C-w>', tn .. '<C-w>')
map('t', '<C-h>', '<cmd>wincmd h<CR>')
map('t', '<C-j>', '<cmd>wincmd j<CR>')
map('t', '<C-k>', '<cmd>wincmd k<CR>')
map('t', '<C-l>', '<cmd>wincmd l<CR>')
-- File explorer -- File explorer
vim.keymap.set('n', '<leader>e', '<cmd>NvimTreeToggle<CR>') map('n', '<leader>e', cmd('NvimTreeToggle'))
vim.keymap.set('n', '<leader>E', '<cmd>NvimTreeOpen<CR>') map('n', '<leader>E', cmd('NvimTreeOpen'))
-- Diagnostics
map('n', ']d', function()
vim.diagnostic.jump({ count = 1, float = true })
end)
map('n', '[d', function()
vim.diagnostic.jump({ count = -1, float = true })
end)
map('n', '<leader>q', vim.diagnostic.setloclist)