Settings

June 13, 2026 · View on GitHub

This file documents most settings. Some settings are not documented yet. You might find examples in config/settings.json

KeyTypeDefaultDescription
language-mappingsobjectMapping of regex to language id, used to assign language ids by file extension/path.
langobjectMapping of language id to language config, used to specify various settings per language. See here
snippetsobjectSnippets per language.
startup-commandsarrayList of commands to execute at startup.
ui.highlight-yankbooltrueHighlight yanked ranges.
....
context-lines.enabledbooltrue
context-lines.separatorstring"»"
context-lines.showregex"(definition\.(.*))"
context-lines.show-classesbooltrue
context-lines.show-conditionalsbooltrue
context-lines.show-functionsbooltrue
context-lines.show-modulesbooltrue
context-lines.stylestring"breadcrumb"
debug.draw-text-chunksboolfalseGUI only: Highlight text chunks
debug.log-text-render-timeboolfalseLog how long it takes to generate the render commands for a text editor.
debug.log-to-internal-documentboolfalseWrite logs to an internal document which can be opened using the logs command.
editor.base-modesseq[string]["editor"]List of input modes which are always active (at the lowest priority).
editor.clear-input-history-delayint3000After how many milliseconds of no input the input history is cleared.
editor.close-unused-documents-timerint10How often the editor will check for unused documents and close them, in seconds.
editor.command-line-mode-highstring"command-line-high"Global mode to apply while the command line is open.
editor.command-line-mode-lowstring"command-line-low"Global mode to apply while the command line is open.
editor.command-line-result-mode-highstring"command-line-result-high"Global mode to apply while the command line is open showing a command result.
editor.command-line-result-mode-lowstring"command-line-result-low"Global mode to apply while the command line is open showing a command result.
editor.custom-mode-on-topbooltrueIf true then the app mode event handler (if the app mode is not '') will be on top of the event handler stack, otherwise it will be at the bottom (but still above the 'editor' event handler).
editor.insert-input-delayint150After how many milliseconds of no input a pending input gets inserted as text, if you bind a key which inserts text in e.g. a multi key keybinding aswell. Say you bind jj to exit insert mode, then if you press j once and wait for this delay then it will insert j into the document, but if you press j again it will will exit insert mode instead. If you press another key like k before the time ends it will immediately insert the j and the k.
editor.keep-session-historybooltrueIf true then the editor will keep a history of opened sessions in data://sessions.json, which enables features like opening a recent session or opening the last session.
editor.max-search-result-display-lenint1000Max length of each individual search result (search results are cut off after this value).
editor.max-search-resultsint1000Max number of search results returned by global text based search.
editor.open-session.argsOption[seq[any]]nullCommand arguments to use when opening a session in a new window.
editor.open-session.commandOption[string]nullCommand to use when opening a session in a new window.
editor.open-session.use-multiplexerbooltrueIf true then Nev will detect if it's running inside a multiplexer like tmux, zellij or wezterm (by using environment variables) and if so opening a session will use the command editor.open-session.tmux or editor.open-session.zellij or editor.open-session.wezterm
editor.print-statistics-on-shutdownboolfalseIf true the editor prints memory usage statistics when quitting.
editor.prompt-before-quitboolfalseIf true then you will be prompted to confirm quitting even when no unsaved changes exist.
editor.record-input-historyboolfalseWhether the editor shows a history of the last few pressed buttons in the status bar.
editor.save-in-sessionbooltrueAny editor with this set to true will be stored in the session and restored on startup.
editor.treesitter-wasm-download-urlstring"https://github.com/Nimaoth/tree-sitter-wasm-binaries/releases/download/v0.3/{language}.tar.gz"Global mode to apply while the command line is open showing a command result.
editor.watch-app-configbooltrueWatch the config files in the app directory and automatically reload them when they change.
editor.watch-themebooltrueWatch the theme directory for changes to the theme.
editor.watch-user-configbooltrueWatch the config files in the user directory and automatically reload them when they change.
editor.watch-workspace-configbooltrueWatch the config files in the workspace directory and automatically reload them when they change.
formatter.commandseq[string][]Command to run. First entry is path to the formatter program, subsequent entries are passed as arguments to the formatter.
formatter.input"temp-file", "file", "stdin""temp-file"How input is passed to the formatter temp-file: When formatting the file is saved to a temporary file and the formatter is run on the temporary file file: The formatter is run on the actual file. Make sure to save first. stdin: The file is passed to the formatter through stdin, and the formatter is expected to write the formatted output to stdout .
formatter.on-saveboolfalseIf true run the formatter when saving.
formatter.typestring""What type of formatter to use. Leave empty for the default formatter which uses 'formatter.command'
lsp-merge.timeoutint10000Timeout for LSP requests in milliseconds
plugins.command-load-behaviour"dont-run", "async-run", "wait-and-run", "async-or-wait""async-or-wait"Defines if and how to run commands which trigger a plugin to load. 'dont-run': Don't run the command after the plugin is loaded. You have to manually run the command again. 'async-run': Asynchronously load the plugin and run the command afterwards. If the command returns something then the return value will not be available if the command is e.g. called from a plugin. 'wait-and-run': Synchronously load the plugin and run the command afterwards. Return values work fine, but the editor will freeze while loading the plugin. 'async-or-wait': Use 'async-run' behaviour for commands with no return value and 'wait-and-run' for commands with return values.
plugins.watch-plugin-directoriesbooltrueWhether to watch the plugin directories for changes and load new plugins
selector.base-modestring"popup.selector"
selector.min-scorefloat0
terminal.base-modestring"terminal"Input mode which is always active while a terminal view is active.
terminal.default-modestring""Input mode to activate when creating a new terminal, if no mode is specified otherwise.
terminal.idle-thresholdint500After how many milliseconds of no data received from a terminal it is considered idle, and can be reused for running more commands.
text.add-new-file-vcsboolfalseIf true then newly saved files will be added to the vcs (only for perforce right now, does nothing for git)
text.add-new-file-vcs-promptbooltrueIf true then you will be prompted when saving a new file on whether to add it to the vcs, otherwise the file is always added.
text.auto-insert-closebooltrueAutomatically insert closing parenthesis, braces, brackets and quotes.
text.auto-reloadboolfalseIf true then files will be automatically reloaded when the content on disk changes (except if you have unsaved changes).
text.choose-cursor-maxint300Maximum number of locations to highlight choose cursor mode.
text.code-actions.signstring"⚑"Character to use as sign for lines where code actions are available. Empty string or null means no sign will be shown for code actions.
text.code-actions.sign-colorstring"info"What color the sign for code actions should be. Can be a theme color name or hex code (e.g. #12AB34).
text.code-actions.sign-widthint1How many columns the sign occupies.
text.color-highlight.enableboolfalseAdd colored inlay hints before any occurance of a string representing a color. Color detection is configured per language in text.color-highlight.{language-id}.
text.color-highlight.kind"hex", "float1", "float255""hex"How to interpret the number. 'hex' means the number is written as either 6 or 8 hex characters, e.g. ABBACA7. 'float1' means the number is a float with 0 being black and 1 being white. 'float255' means the number is a float or int with 0 being black and 255 being white.
text.color-highlight.regexregex"#([0-9a-fA-F]{6})|#([0-9a-fA-F]{8})"Regex used to find colors. Use capture groups to match one or more numbers within a color definition, depending on the kind.
text.completion-modestring"editor.text"Mode to activate while completion window is open.
text.completion-word-charsseq[string or seq[string]][["a","z"],["A","Z"],["0","9"],"_"]
text.control-click-commandstring"goto-definition"Command to run after control clicking on some text.
text.control-click-command-argsany[]Arguments to the command which is run when control clicking on some text.
text.cursor-marginfloat0.15How far from the edge to keep the cursor, either percentage of screen height (0-1) or number of lines, depending on text.cursor-margin-relative.
text.cursor-margin-relativebooltrueWhether text.cursor-margin is relative to the screen height (0-1) or an absolute number of lines.
text.default-modestring""Default mode to set when opening/creating text documents.
text.diagnostics.enableboolfalseEnable diagnostics. Also requires a language server which supports diagnostics.
text.diagnostics.snapshot-historyint5How many snapshots to keep when editing. Snapshots are used to fix up diagnostic locations when receiving diagnostics for an older version of the document (e.g when you continue editing and the languages doesn't respond fast enough). You might want to increase this if you are using a language server which is very slow and you want diagnostics to show up even when you're actively typing (diagnostics received for old document versions are discarded).
text.diff-reload.enablebooltrueWhen reloading a file the editor will compute the diff between the file on disk and the in memory document, and then apply the diff to the in memory version so it matches the content on disk. This can reduce memory usage when reloading files often (although it increases memory usage while reloading and increases load times). It's also better for collaboration as it doesn't affect the entire file.
text.diff-reload.timeoutint250Max number of milliseconds to use for diffing. If the timeout is exceeded then the file will be reloaded normally.
text.disable-completionsboolfalseDisable auto completion
text.disable-scrollingboolfalseDisable scrolling
text.double-click-commandstring"extend-select-move"Command to run after double clicking on some text.
text.double-click-command-argsany["word",true]Arguments to the command which is run when double clicking on some text.
text.highlight-matches.delayint250How long after moving the cursor matching text is highlighted.
text.highlight-matches.enablebooltrueEnable highlighting of text matching the current selection or word containing the cursor (if the selection is empty).
text.highlight-matches.max-file-sizeint104857600Don't highlight matching text in files above this size (in bytes).
text.highlight-matches.max-selection-lengthint1024Don't highlight matching text if the selection spans more bytes than this.
text.highlight-matches.max-selection-linesint5Don't highlight matching text if the selection spans more lines than this.
text.hover-modestring"editor.text.hover"Mode to activate while hover window is open.
text.hover.commandanynullCommand to run when hovering something.
text.hover.delayint250How many milliseconds after hovering a word the lsp hover request is sent.
text.inclusive-selectionboolfalseSpecifies whether a selection includes the character after the end cursor. If true then a selection like (0:0...0:4) with the text 'Hello world' would select 'Hello'. If false then the selected text would be 'Hell'. If you use Vim motions then the Vim plugin manages this setting.
text.indent"tabs", "spaces""spaces"Whether to used spaces or tabs for indentation. When indent detection is enabled then this only specfies the default for new files and files where the indentation type can't be detected automatically.
text.indent-afterOption[seq[string]]nullWhen you insert a new line, if the current line ends with one of these strings then the new line will be indented.
text.indent-detection.enablebooltrueEnable auto detecting the indent style when opening files.
text.indent-detection.samplesint50How many indent characters to process when detecting the indent style. Increase this if it fails for files which start with many unindented lines.
text.indent-detection.timeoutint20Max number of milliseconds to spend trying to detect the indent style.
text.inlay-hints.enablebooltrueWhether inlay hints are enabled.
text.line-commentOption[string]nullString which starts a line comment
text.mode-changed-handler-commandstring""Command to execute when the mode of the text editor changes
text.modesseq[string]["editor.text"]List of input modes text editors.
text.ripgrep.extra-argsseq[string][]Extra arguments passed to ripgrep
text.ripgrep.file-typeOption[string]nullOverride the ripgrep type name. By default the documents language id is used.
text.ripgrep.pass-typebooltruePass the --type argument to ripgrep using either the language id or the value from file-type.
text.scroll-to-change-on-reloadOption[bool]falseIf not null then scroll to the changed region when a file is reloaded.
text.scroll-to-end-on-insertboolfalseIf true then scroll to the end of the file when text is inserted at the end and the cursor is already at the end.
text.search-regexes.goto-declarationOption[regex]nullRegex to use when using the goto-declaration feature.
text.search-regexes.goto-definitionOption[regex]nullRegex to use when using the goto-definition feature.
text.search-regexes.goto-implementationOption[regex]nullRegex to use when using the goto-implementation feature.
text.search-regexes.goto-referencesOption[regex]nullRegex to use when using the goto-references feature.
text.search-regexes.goto-type-definitionOption[regex]nullRegex to use when using the goto-type-definition feature.
text.search-regexes.show-only-matching-partbooltrueIf true then the search results will only show the part of a line that matched the regex. If false then the entire line is shown.
text.search-regexes.symbolsOption[regex]nullRegex to use when using the symbols feature.
text.search-regexes.workspace-symbolsOption[regex]nullRegex to use when using the workspace-symbols feature.
text.search-regexes.workspace-symbols-by-kindOption[Table[string, regex]]nullRegex to use when using the workspace-symbols feature. Keys are LSP symbol kinds, values are the corresponding regex.
text.search-workspace-regex-max-resultsint50000Maximum number of results to display for regex based workspace symbol search.
text.signature-help-delayint200How often (in milliseconds) to update signature help while typing.
text.signature-help-enabledbooltrueWhether signature help is enabled.
text.signature-help-movestring"(ts \'call.inner\') (overlapping) (last)"Which move to use to find the beginning of the argument list when showing signature help.
text.signature-help-trigger-charsseq[string]["("]Which characters trigger signature help when inserted.
text.signature-help-trigger-on-edit-in-argsbooltrueTrigger signature help when editing inside an argument list, as defined by 'signature-help-move'
text.signs.max-widthint2If show is auto then this is the max width of the sign column, if show is yes then this is the exact width.
text.signs.show"auto", "yes", "no", "number""number"Defines how the sign column is displayed. - auto: Signs are next to line numbers, width is based on amount of signs in a line. - yes: Signs are next to line numbers and sign column is always visible. Width is defined in max-width - no: Don't show the sign column - number: Show signs instead of the line number, no extra sign column.
text.single-click-commandstring""Command to run after single clicking on some text.
text.single-click-command-argsany[]Arguments to the command which is run when single clicking on some text.
text.tab-stop-modestring"editor.text.tab-stop"Mode to activate while hover window is open.
text.tab-widthint4How many characters wide a tab is.
text.treesitter.enablebooltrueEnable parsing code into ASTs using treesitter. Also requires a treesitter parser for a specific language.
text.treesitter.languageOption[string]nullOverride the language name used for choosing the treesitter parser. If not set then the documents language id is used.
text.treesitter.pathOption[string]nullOverride the path to the treesitter parser (.dll/.so/.wasm). By default
text.treesitter.queriesOption[string]nullPath relative to the repository root where queries are located. If not set then the editor will look for the queries.
text.treesitter.repositoryOption[string]nullPath relative to the repository root where queries are located. If not set then the editor will look for the queries.
text.trim-trailing-whitespace.enabledbooltrueIf true trailing whitespace is deleted when saving files.
text.trim-trailing-whitespace.max-sizeint1000000Don't trim trailing whitespace when filesize is above this limit.
text.triple-click-commandstring"extend-select-move"Command to run after triple clicking on some text.
text.triple-click-command-argsany["line",true]Arguments to the command which is run when triple clicking on some text.
text.wrap-linesbooltrueEnable line wrapping.
text.wrap-marginint1How many characters from the right edge to start wrapping text.
ui.background.inactive-brightness-changefloat-0.025How much to change the brightness for inactive views.
ui.background.transparentboolfalseIf true the background is transparent.
ui.cursor-trail-lengthint2How long the cursor trail is. Set to 0 to disable cursor trail.
ui.cursor-trail-speedfloat100How fast to interpolate the cursor trail position when moving the cursor. Higher means faster.
ui.diagnostics-location"line-end", "below", "line-end-or-below""line-end"Where diagnostics are displayed relative to their source line. 'below' renders them on a separate line below. 'line-end' renders the first diagnostic inline at the end of the line. 'line-end-or-below' renders below on the cursor line, at line-end elsewhere (default).
ui.font-familystring"app://fonts/DejaVuSansMono.ttf"Full path to regular font file.
ui.font-family-boldstring"app://fonts/DejaVuSansMono-Bold.ttf"Full path to bold font file.
ui.font-family-bold-italicstring"app://fonts/DejaVuSansMono-BoldOblique.ttf"Full path to bold italic font file.
ui.font-family-italicstring"app://fonts/DejaVuSansMono-Oblique.ttf"Full path to italic font file.
ui.hide-tab-bar-when-singleboolfalseWhen true then tab layouts don't render a tab bar when they only have one tab.
ui.highlight-inline-changesbooltrueWhether changes within a line should be highlighted in the diff view
ui.indent-guidebooltrueEnable indent guides to show the indentation of the current line.
ui.line-numbersLineNumbers"absolute"How line numbers should be displayed.
ui.max-viewsint2Maximum number of views (files or other UIs) which can be shown.
ui.popup-which-key-heightint5How many rows tall the window showing next possible inputs should be when showing in a popup.
ui.rainbow-parenthesesboolfalseEnable highlighting parentheses, brackets etc in different colors. Uses 'rainbow0', 'rainbow1' etc theme keys.
ui.scroll-barbooltrueWhether a scrollbar is shown.
ui.scroll-speedfloat50How many pixels (or rows in the terminal) to scroll per scroll wheel tick.
ui.smooth-scrollbooltrueEnable smooth scrolling.
ui.smooth-scroll-snap-thresholdfloat0.5Percentage of screen height at which the smooth scroll offset will be snapped to the target location. E.g. if this is 0.5, then if the smooth scroll offset if further from the target scroll offset than 50% of the screen height then the smooth scroll offset will instantly jump to the target scroll offset (-50% of the screen height). This means that the smooth scrolling will not take time proportional to the scroll distance for jumps bigger than the screen height.
ui.smooth-scroll-speedfloat25How fast smooth scrolling interpolates.
ui.status-lineseq[any]["mode","layout","vcs.status","session"]Configures what to show in the status line.
ui.syntax-highlightingbooltrueEnable syntax highlighting.
ui.tab-header-widthint30Width of tab layout headers in characters
ui.themestring"app://themes/gruvbox-dark.json"VFS path of the theme.
ui.toast.animationbooltrueAnimate toast positions
ui.toast.durationint8000How long toasts are displayed for, in milliseconds.
ui.toast.maxint5Max number of toast to show at a time
ui.toast.style"minimal", "box""minimal"Animate toast positions
ui.vsyncbooltrueEnable vertical sync to prevent screen tearing.
ui.which-key-delayint250After how many milliseconds the which key window opens.
ui.which-key-heightint6How many rows tall the window showing next possible inputs should be.
ui.which-key-no-progressboolfalseIf true then the window showing next possible inputs will be displayed even when no keybinding is in progress (i.e. it will always be shown).
ui.which-key-show-when-modboolfalseShow which key window when holding down modifiers.
ui.whitespace-charstring"·"Character to use when rendering whitespace. If this is the empty string or not set then spaces are not rendered.
ui.whitespace-colorstring"comment"Color of rendered whitespace. Can be a theme key or hex color (e.g #ff00ff).
unsaved.behaviour"none", "temp", "real""none"What to do with unsaved files. none - Don't save unsaved files automatically. Files are only saved through the explicit save command temp - Save unsaved files to temp files in app://unsaved (for non-existing files) or ws0://.nev/unsaved for existing files. real - Save existing files to the actual real file. Non-existing files are still saved to app://unsaved
unsaved.intervalint60How often (in seconds) the editor auto saves unsaved files. Set to 0 to disable auto saving.