Editorconfig

Nvim :help pages, generated from source using the tree-sitter-vimdoc parser.


EditorConfig integration
Nvim supports EditorConfig. When a file is opened, Nvim searches all parent directories of that file for ".editorconfig" files, parses them, and applies any properties that match the opened file. Think of it like 'modeline' for an entire (recursive) directory. For more information see https://editorconfig.org/.
g:editorconfig b:editorconfig EditorConfig is enabled by default. To disable it, add to your config:
vim.g.editorconfig = false
(Vimscript: let g:editorconfig = v:false). It can also be disabled per-buffer by setting the b:editorconfig buffer-local variable to false.
Nvim stores the applied properties in b:editorconfig if it is not false.
editorconfig-properties The following properties are supported by default:
editorconfig_root root If "true", then stop searching for .editorconfig files in parent directories. This property must be at the top-level of the .editorconfig file (i.e. it must not be within a glob section).
editorconfig_charset charset One of "utf-8", "utf-8-bom", "latin1", "utf-16be", or "utf-16le". Sets the 'fileencoding' and 'bomb' options.
editorconfig_end_of_line end_of_line One of "lf", "crlf", or "cr". These correspond to setting 'fileformat' to "unix", "dos", or "mac", respectively.
editorconfig_indent_style indent_style One of "tab" or "space". Sets the 'expandtab' option.
editorconfig_indent_size indent_size A number indicating the size of a single indent. Alternatively, use the value "tab" to use the value of the tab_width property. Sets the 'shiftwidth' and 'softtabstop' options.
editorconfig_insert_final_newline insert_final_newline "true" or "false" to ensure the file always has a trailing newline as its last byte. Sets the 'fixendofline' and 'endofline' options.
editorconfig_max_line_length max_line_length A number indicating the maximum length of a single line. Sets the 'textwidth' option.
editorconfig_tab_width tab_width The display size of a single tab character. Sets the 'tabstop' option.
editorconfig_trim_trailing_whitespace trim_trailing_whitespace When "true", trailing whitespace is automatically removed when the buffer is written.
editorconfig-custom-properties New properties can be added by adding a new entry to the "properties" table. The table key is a property name and the value is a callback function which accepts the number of the buffer to be modified, the value of the property in the .editorconfig file, and (optionally) a table containing all of the other properties and their values (useful for properties which depend on other properties). The value is always a string and must be coerced if necessary. Example:
require('editorconfig').properties.foo = function(bufnr, val, opts)
  if opts.charset and opts.charset ~= "utf-8" then
    error("foo can only be set when charset is utf-8", 0)
  end
  vim.b[bufnr].foo = val
end
Main
Commands index
Quick reference