feat: config without plugins

This commit is contained in:
2026-01-28 15:06:26 +01:00
commit 0f4619f53b
6 changed files with 979 additions and 0 deletions
+130
View File
@@ -0,0 +1,130 @@
-- Leader Map
vim.g.mapleader = ' '
vim.g.maplocalleader = ' '
vim.keymap.set({ 'n', 'v' }, '<Space>', '<Nop>', { silent = true })
local opts = { noremap = true, silent = true }
-- Movement
vim.keymap.set("n", "n", "nzzzv", { desc = "Next search result (centered)" })
vim.keymap.set("n", "N", "Nzzzv", { desc = "Previous search result (centered)" })
vim.keymap.set("n", "<C-d>", "<C-d>zz", { desc = "Half page down (centered)" })
vim.keymap.set("n", "<C-u>", "<C-u>zz", { desc = "Half page up (centered)" })
vim.keymap.set("n", "<A-j>", ":m .+1<CR>==", { desc = "Move line down" })
vim.keymap.set("n", "<A-k>", ":m .-2<CR>==", { desc = "Move line up" })
vim.keymap.set("v", "<A-j>", ":m '>+1<CR>gv=gv", { desc = "Move selection down" })
vim.keymap.set("v", "<A-k>", ":m '<-2<CR>gv=gv", { desc = "Move selection up" })
-- Split Navigation
vim.keymap.set('n', '<leader>vs', '<C-w>v', { desc = 'Split window vertically' })
vim.keymap.set('n', '<leader>hs', '<C-w>s', { desc = 'Split window horizontally' })
vim.keymap.set('n', '<leader>es', '<C-w>=', { desc = 'Equalize splits' })
vim.keymap.set('n', '<leader>xs', ':close<CR>', { desc = 'Close split' })
vim.keymap.set('n', '<C-k>', ':wincmd k<CR>', opts)
vim.keymap.set('n', '<C-j>', ':wincmd j<CR>', opts)
vim.keymap.set('n', '<C-h>', ':wincmd h<CR>', opts)
vim.keymap.set('n', '<C-l>', ':wincmd l<CR>', opts)
vim.keymap.set('n', '<Up>', ':resize -2<CR>', opts)
vim.keymap.set('n', '<Down>', ':resize +2<CR>', opts)
vim.keymap.set('n', '<Left>', ':vertical resize -2<CR>', opts)
vim.keymap.set('n', '<Right>', ':vertical resize +2<CR>', opts)
-- Buffer Navigation
vim.keymap.set("n", "<leader>bn", ":bnext<CR>", { desc = "Next buffer" })
vim.keymap.set("n", "<leader>bp", ":bprevious<CR>", { desc = "Previous buffer" })
-- File Navigation
vim.keymap.set("n", "<leader>e", ":Explore<CR>", { desc = "Open file explorer" })
vim.keymap.set("n", "<leader>ff", ":find ", { desc = "Find file" })
-- Tab Navigation
vim.keymap.set('n', '<leader>tn', ':tabnew<CR>', { desc = 'New tab' })
vim.keymap.set('n', '<leader>tx', ':tabclose<CR>', { desc = 'Close tab' })
vim.keymap.set('n', '<leader>tm', ':tabmove<CR>', { desc = 'Move tab' })
vim.keymap.set('n', '<leader>t>', ':tabmove +1<CR>', { desc = 'Move tab right' })
vim.keymap.set('n', '<leader>t<', ':tabmove -1<CR>', { desc = 'Move tab left' })
-- Function to open file in new tab
local function open_file_in_tab()
vim.ui.input({ prompt = 'File to open in new tab: ', completion = 'file' }, function(input)
if input and input ~= '' then
vim.cmd('tabnew ' .. input)
end
end)
end
-- Function to duplicate current tab
local function duplicate_tab()
local current_file = vim.fn.expand('%:p')
if current_file ~= '' then
vim.cmd('tabnew ' .. current_file)
else
vim.cmd('tabnew')
end
end
-- Function to close tabs to the right
local function close_tabs_right()
local current_tab = vim.fn.tabpagenr()
local last_tab = vim.fn.tabpagenr('$')
for i = last_tab, current_tab + 1, -1 do
vim.cmd(i .. 'tabclose')
end
end
-- Function to close tabs to the left
local function close_tabs_left()
local current_tab = vim.fn.tabpagenr()
for i = current_tab - 1, 1, -1 do
vim.cmd('1tabclose')
end
end
vim.keymap.set('n', '<leader>tO', open_file_in_tab, { desc = 'Open file in new tab' })
vim.keymap.set('n', '<leader>td', duplicate_tab, { desc = 'Duplicate current tab' })
vim.keymap.set('n', '<leader>tr', close_tabs_right, { desc = 'Close tabs to the right' })
vim.keymap.set('n', '<leader>tL', close_tabs_left, { desc = 'Close tabs to the left' })
-- Function to close buffer but keep tab if it's the only buffer in tab
local function smart_close_buffer()
local buffers_in_tab = #vim.fn.tabpagebuflist()
if buffers_in_tab > 1 then
vim.cmd('bdelete')
else
-- If it's the only buffer in tab, close the tab
vim.cmd('tabclose')
end
end
vim.keymap.set('n', '<leader>bd', smart_close_buffer, { desc = 'Smart close buffer/tab' })
-- Diagnostic keymaps
vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, { desc = 'Go to previous diagnostic message' })
vim.keymap.set('n', ']d', vim.diagnostic.goto_next, { desc = 'Go to next diagnostic message' })
vim.keymap.set('n', '<leader>d', vim.diagnostic.open_float, { desc = 'Open floating diagnostic message' })
vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist, { desc = 'Open diagnostics list' })
-- Convenience
vim.keymap.set({ "n", "v" }, "<leader>d", '"_d', { desc = "Delete without yanking" })
vim.keymap.set("x", "<leader>p", [["_dP]], { desc = 'Paste previously yanked' })
vim.keymap.set('n', '<leader>lw', '<cmd>set wrap!<CR>', opts)
vim.keymap.set('v', '<', '<gv', opts)
vim.keymap.set('v', '>', '>gv', opts)
vim.keymap.set("n", "<leader>c", ":nohlsearch<CR>", { desc = "Clear search highlights" })
vim.keymap.set("n", "J", "mzJ`z", { desc = "Join lines and keep cursor position" })
vim.keymap.set("n", "<leader>rc", ":e $MYVIMRC<CR>", { desc = "Edit config" })
vim.keymap.set("n", "<leader>rl", ":so $MYVIMRC<CR>", { desc = "Reload config" })