diff --git a/neovim/dev.nix b/neovim/dev.nix index 845cc8a..b2ba5df 100644 --- a/neovim/dev.nix +++ b/neovim/dev.nix @@ -25,6 +25,79 @@ in "${modulesPath}/profiles/recommended.nix" ]; + vim.opt = { + # Better Unix support + viewoptions = [ "folds" "options" "cursor" "unix" "slash" ]; + encoding = "utf-8"; + + # Enable 24-bit color + termguicolors = true; + + # Other options + backspace = [ "indent" "eol" "start" ]; + laststatus = 2; + showmode = false; + + # Tabs as spaces + expandtab = true; + tabstop = 2; + softtabstop = 2; + shiftwidth = 2; + + # Fixes broken cursor on Linux + guicursor = ""; + + # Disable mouse / touchpad + mouse = ""; + + # Incremental substitutin + inccommand = "split"; + + # Hide files when leaving them. + hidden = true; + # Show line numbers. + number = true; + # Minimum line number column width. + numberwidth = 1; + # Number of screen lines to use for the commandline. + cmdheight = 2; + # Lines length limit (0 if no limit). + textwidth = 0; + # Don't cut lines in the middle of a work. + linebreak = true; + # Show matching parenthesis. + showmatch = true; + # Time during which the matching parenthesis is shown. + matchtime = 2; + # Sensible default line auto cutting and formatting. + formatoptions = "jtcrq"; + # Copy/Past to/from clipboard. + clipboard = "unnamedplus"; + # Highlight line cursor is currently on. + cursorline = true; + # Invisible characters representation when :set list + listchars = { + tab = "→ "; + trail = "~"; + nbsp = "␣"; + eol = "¬"; + }; + + # Search + # Incremental search. + incsearch = true; + # Case insensitive. + ignorecase = true; + # Case insensitive if no uppercase letter in pattern, case sensitive otherwise. + smartcase = true; + + # Fold level + foldlevel = 99; + foldlevelstart = 99; + foldminlines = 3; + foldnestmax = 5; + }; + # Enable fast navigation between windows vim.keymap.set = map (k: { mode = "n"; lhs = ctrl k; rhs = "${ctrl "w"}${k}"; }) [ "h" "l" "j" "k" ];