Skip to main content
This page documents all vim options set in lua/config/options.lua. Options are organized by category for easy navigation.

Editor behavior

Core settings that control how Neovim behaves and responds to user input.
OptionValueDescription
mouse"a"Enable mouse support in all modes
clipboard"unnamedplus"Use system clipboard for yank/paste operations
undofiletrueSave undo history between sessions
undodirstdpath("data")/undoDirectory where undo files are stored
updatetime400Time in milliseconds before swap file is written (faster completion, default is 4000ms)
timeoutlen1000Time in milliseconds to wait for a mapped sequence to complete
confirmtrueConfirm before exiting a modified buffer
autoreadtrueAutomatically reload files changed outside of Neovim
The undo directory is automatically set to Neovim’s data directory to keep undo files organized and persistent across sessions.

UI and display

Visual settings that control how the editor appears and displays content.
OptionValueDescription
termguicolorstrueEnable RGB colors (8-bit true color)
COLORTERM env"truecolor"Explicitly set terminal color support
background"dark"Use dark background color scheme
cursorlinetrueHighlight the line where the cursor is located
cursorlineopt"number"Only highlight the line number, not the entire line
fillchars.eob" "Fill empty lines at end of buffer with spaces instead of ~
winborder"rounded"Use rounded corners for floating windows
listfalseWhitespace visualization handled by visual-whitespace.nvim plugin
OptionValueDescription
numbertrueShow absolute line numbers
relativenumbertrueShow relative line numbers for easier motion commands
numberwidth1Minimum width of the number column
signcolumn"yes:1"Always show sign column with width of 1 to prevent layout shifts
The sign column width is set to 1 to accommodate diagnostic signs and git status indicators without taking excessive space.
OptionValueDescription
wrapfalseDon’t wrap long lines
breakindenttrueWhen wrapping, maintain visual indentation of original line
showmodefalseDon’t show mode in command line (displayed in status line instead)
showcmdfalseDon’t show pending commands in command line
rulerfalseDon’t show cursor position (shown in status line)
OptionValueDescription
showtabline0Never show the tab line
cmdheight0Hide command line when not in use
laststatus3Single global status line for all windows
pumheight10Limit autocomplete menu to 10 items
With cmdheight set to 0, the command line overlays the status line when needed, providing more screen space for content.
Settings that control search behavior and highlighting.
OptionValueDescription
hlsearchtrueHighlight all search matches
incsearchtrueShow first search result while typing
ignorecasetrueIgnore case in search patterns
smartcasetrueOverride ignorecase if search contains uppercase letters
With ignorecase and smartcase enabled together, searches are case-insensitive unless you type an uppercase letter.

Indentation

Tab and indentation settings for code editing.
OptionValueDescription
expandtabtrueConvert tabs to spaces
shiftwidth4Number of spaces for each indentation level
tabstop4Number of spaces a tab character displays as
softtabstop4Number of spaces inserted/deleted when pressing Tab/Backspace
smartindenttrueSmart autoindenting when starting a new line
smarttabtrueInsert blanks according to shiftwidth at line start
autoindenttrueCopy indent from current line when starting new line
This configuration uses 4 spaces for indentation. Some projects may require 2 spaces. Consider using EditorConfig or per-project settings for different conventions.

Splits

Window split behavior settings.
OptionValueDescription
splitbelowtrueHorizontal splits open below current window
splitrighttrueVertical splits open to the right of current window

Files

File handling and backup settings.
OptionValueDescription
fileencoding"utf-8"Default file encoding
backupfalseDon’t create backup files
writebackupfalseDon’t create backup before overwriting file
swapfilefalseDon’t use swap files
Swap files and backups are disabled. Ensure you have proper version control and save frequently.

Completion

Autocompletion and text concealing options.
OptionValueDescription
conceallevel0Show all text, don’t hide markdown syntax or quotes
completeopt{"menu", "menuone", "noselect"}Standard autocomplete menu behavior

Code folding

Treesitter-based code folding configuration.
OptionValueDescription
foldenabletrueEnable code folding
foldcolumn"1"Show fold column with width of 1
foldexpr"v:lua.vim.treesitter.foldexpr()"Use Treesitter for fold expressions
foldlevel99Folds with higher level will be closed
foldlevelstart99Start with all folds open
foldmethod"expr"Use expression for folding
Folding is powered by Treesitter, which provides accurate syntax-aware folds. All folds start open by default (foldlevel=99).

Other options

Miscellaneous settings that don’t fit other categories.
OptionValueDescription
titletrueSet the terminal window title
scrolloff5Minimum number of lines to keep above/below cursor for context
virtualedit"block"In visual block mode, allow cursor to move anywhere
inccommand"split"Show preview of substitution commands in split window
The inccommand option provides live preview when using commands like :%s/foo/bar/g, showing changes in a split window before you commit them.

Filetype detection

Custom filetype associations for special file patterns.
ExtensionFiletype
.envdotenv
.mdxmdx
FilenameFiletype
.envdotenv
envdotenv
PatternFiletype
[jt]sconfig.*.jsonjsonc (JSON with comments)
.env.[anything]dotenv
Diagnostic signs are configured separately in plugins/lsp/init.lua via vim.diagnostic.config().

Build docs developers (and LLMs) love