-- SETTINGS.LUA: Comprehensive Neovim Configuration -- Enable line numbers vim.o.number = true -- Show absolute line numbers vim.o.relativenumber = true -- Show relative line numbers (useful for jump motions) -- Cursor behavior vim.o.cursorline = true -- Highlight the line where the cursor is vim.o.cursorcolumn = true -- Highlight the column where the cursor is vim.o.scrolloff = 8 -- Keep 8 lines visible above/below the cursor vim.o.sidescrolloff = 8 -- Keep 8 columns visible to the left/right of the cursor -- UI customization vim.o.termguicolors = true -- Enable 24-bit RGB color in the terminal vim.o.signcolumn = "yes" -- Always show the sign column (useful for LSP, Git) vim.o.colorcolumn = "80" -- Highlight the 80th column (good for coding style guides) vim.o.laststatus = 3 -- Global status line (shared between windows) vim.o.showmode = false -- Disable the default mode display (e.g., -- INSERT --) vim.o.wrap = false -- Disable line wrapping (horizontal scrolling for long lines) vim.o.showcmd = true -- Display incomplete commands at the bottom vim.o.ruler = true -- Show the cursor position at the bottom right -- Tabs and indentation vim.o.tabstop = 4 -- Number of spaces for a tab vim.o.shiftwidth = 4 -- Number of spaces for indentation vim.o.softtabstop = 4 -- Treat as 4 spaces while editing vim.o.expandtab = true -- Convert tabs to spaces vim.o.autoindent = true -- Copy indentation from the previous line vim.o.smartindent = true -- Automatically add extra indentation for new lines -- Search settings vim.o.ignorecase = true -- Ignore case when searching vim.o.smartcase = true -- Override ignorecase if the search query contains uppercase vim.o.incsearch = true -- Show incremental search results as you type vim.o.hlsearch = true -- Highlight all matches from the search vim.o.wildmenu = true -- Show a menu for command-line tab completion -- File handling vim.o.undofile = true -- Enable persistent undo (saves undo history in a file) vim.o.swapfile = false -- Disable swap files (reduces disk writes) vim.o.backup = false -- Disable file backups vim.o.writebackup = false -- Disable backup before overwriting a file vim.o.autoread = true -- Automatically reload files changed outside of Neovim vim.o.hidden = true -- Allow switching buffers without saving -- Split behavior vim.o.splitright = true -- Open vertical splits to the right vim.o.splitbelow = true -- Open horizontal splits below vim.o.equalalways = false -- Prevent automatic resizing of splits -- Clipboard vim.o.clipboard = "unnamedplus" -- Use the system clipboard for all operations -- Performance vim.o.lazyredraw = true -- Redraw only when needed (improves performance) vim.o.updatetime = 300 -- Time (ms) to trigger CursorHold events (lower = faster) vim.o.timeoutlen = 500 -- Time (ms) to wait for a key sequence to complete -- Completion vim.o.completeopt = "menu,menuone,noselect" -- Customize the completion menu vim.o.pumheight = 10 -- Limit the number of items in the popup menu -- Folding vim.o.foldmethod = "indent" -- Fold based on indentation levels vim.o.foldlevel = 99 -- Start unfolded vim.o.foldenable = true -- Enable folding by default -- Backup directory (if enabled) vim.o.backupdir = vim.fn.stdpath("data") .. "/backup//" -- Store backups in a custom directory -- Mouse support vim.o.mouse = "a" -- Enable mouse in all modes -- Command-line vim.o.cmdheight = 1 -- Height of the command-line area vim.o.shortmess = vim.o.shortmess .. "c" -- Avoid showing extra messages during completion -- Spell checking vim.o.spell = false -- Disable spell checking by default vim.o.spelllang = "en" -- Set spell check language to English -- Wildmenu (command-line completion) vim.o.wildignore = "*.o,*.obj,*.bak,*.exe,*.pyc,*.class" -- Ignore specific file types during file navigation vim.o.wildmode = "longest:full,full" -- Customize command-line completion behavior -- Terminal integration vim.o.shell = "bash" -- Set the default shell vim.o.shellcmdflag = "-c" -- Set shell command flag -- Key mappings display vim.o.showcmdloc = "statusline" -- Display key mappings in the status line -- Diagnostics (LSP) vim.diagnostic.config({ virtual_text = true, -- Show diagnostics as virtual text signs = true, -- Show signs in the sign column underline = true, -- Underline problematic code update_in_insert = false, -- Don't update diagnostics while typing }) -- Performance optimizations for large files vim.cmd([[ augroup LargeFiles autocmd! autocmd BufReadPre * if getfsize(expand("")) > 1048576 | setlocal syntax=off | endif augroup END ]]) -- Custom filetype settings vim.cmd([[ augroup FileTypeSpecific autocmd! autocmd FileType markdown setlocal wrap spell autocmd FileType python setlocal expandtab shiftwidth=4 tabstop=4 autocmd FileType go setlocal noexpandtab tabstop=8 shiftwidth=8 augroup END ]])