|
vim.g.mapleader = ' '
|
|
|
|
vim.opt.clipboard = 'unnamedplus'
|
|
|
|
-- Search Configuration
|
|
vim.opt.hlsearch = false -- Don't highlight search results after searching
|
|
vim.opt.incsearch = true -- Show search matches as you type
|
|
vim.opt.ignorecase = true -- Ignore case when searching
|
|
vim.opt.smartcase = true -- Override ignorecase if search contains uppercase letters
|
|
|
|
-- Mouse Configuration
|
|
vim.opt.mouse = 'nv' -- Enable mouse in normal and visual modes only
|
|
|
|
-- Text Formatting
|
|
vim.opt.linebreak = true -- Break lines at word boundaries when wrapping
|
|
vim.opt.smartindent = true -- Automatically indent new lines intelligently
|
|
|
|
-- File Management
|
|
vim.opt.swapfile = false -- Don't create swap files
|
|
vim.opt.backup = false -- Don't create backup files
|
|
vim.opt.undodir = vim.fn.expand('~/.cache/nvim/undodir') -- Directory for undo files
|
|
vim.opt.undofile = true -- Save undo history to file for persistence
|
|
|
|
-- Character Encoding
|
|
vim.opt.encoding = 'utf-8' -- Set file encoding to UTF-8
|
|
|
|
-- Line Numbers
|
|
vim.opt.number = true -- Show absolute line numbers
|
|
vim.opt.relativenumber = true -- Show relative line numbers (hybrid numbering)
|
|
|
|
-- Indentation and Tabs
|
|
vim.opt.tabstop = 4 -- Number of spaces a tab character represents
|
|
vim.opt.softtabstop = 4 -- Number of spaces to use when inserting/deleting tabs
|
|
vim.opt.expandtab = true -- Convert tabs to spaces
|
|
vim.opt.shiftwidth = 4 -- Number of spaces to use for each indentation level
|
|
vim.opt.smarttab = true -- Use shiftwidth for tabs at beginning of line
|
|
|
|
-- Scrolling and Display
|
|
vim.opt.scrolloff = 8 -- Keep 8 lines visible above/below cursor when scrolling
|
|
vim.opt.signcolumn = 'yes' -- Always show the sign column (for git, lsp, etc.)
|
|
|
|
-- File Name Handling
|
|
vim.opt.isfname:append('@-@') -- Include @ and - characters in file names
|
|
|
|
-- Completion Menu
|
|
vim.opt.pumheight = 10 -- Limit popup menu height to 10 items
|
|
|
|
-- Performance
|
|
vim.opt.updatetime = 50 -- Faster completion and CursorHold events (milliseconds)
|
|
|
|
-- Visual Guides
|
|
vim.opt.colorcolumn = "80" -- Show vertical line at column 80
|
|
vim.opt.cursorline = true -- Highlight the current line
|
|
|
|
-- Text Formatting Options
|
|
vim.opt.formatoptions = 'tqj' -- t: auto-wrap text, q: format comments, j: remove comment leader when joining lines
|
|
|
|
-- Window Splitting
|
|
vim.opt.splitbelow = true -- Open horizontal splits below current window
|
|
vim.opt.splitright = true -- Open vertical splits to the right of current window
|
|
|
|
-- Diff Mode
|
|
vim.opt.diffopt:append('vertical') -- Show diffs in vertical splits
|
|
|
|
-- Colors
|
|
vim.opt.termguicolors = true -- Enable 24-bit RGB colors in terminal
|
|
|
|
-- Command Line (Neovim 0.8+)
|
|
if vim.fn.has("nvim-0.8") == 1 then
|
|
vim.opt.cmdheight = 0 -- Hide command line when not in use (requires Neovim 0.8+)
|
|
end
|