*plugins.txt* Nvim NVIM REFERENCE MANUAL Type |gO| to see the table of contents. ============================================================================== Plugins and modules included with Nvim *plugins* Nvim includes various Lua and Vim plugins or modules which may provide commands (such as :TOhtml) or modules that you can optionally require() or :packadd. The Lua ones are not part of the |lua-stdlib|, that is, they are not available from the global `vim` module namespace. Some of the plugins are loaded by default while others are not loaded until requested by |:packadd|. ============================================================================== Standard plugins *standard-plugin-list* Help-link Loaded Short description ~ |difftool| No Compares two directories or files side-by-side |editorconfig| Yes Detect and interpret editorconfig |ft-shada| Yes Allows editing binary |shada| files |man.lua| Yes View manpages in Nvim |matchit| Yes Extended |%| matching |matchparen| Yes Highlight matching pairs |netrw| Yes Reading and writing files over a network |package-cfilter| No Filtering quickfix/location list |package-justify| No Justify text |package-nohlsearch| No Automatically run :nohlsearch |package-termdebug| No Debug inside Nvim with gdb |pi_gzip.txt| Yes Reading and writing compressed files |pi_msgpack.txt| No msgpack utilities |pi_paren.txt| Yes Highlight matching parens |pi_spec.txt| Yes Filetype plugin to work with rpm spec files |pi_swapmouse| No Swap meaning of left and right mouse buttons |pi_tar.txt| Yes Tar file explorer |pi_tutor.txt| Yes Interactive tutorial |pi_zip.txt| Yes Zip archive explorer |spellfile.lua| Yes Install spellfile if missing |tohtml| Yes Convert buffer to html, syntax included |undotree-plugin| No Interactive textual undotree ============================================================================== Builtin plugin: difftool *difftool* :DiffTool {left} {right} *:DiffTool* Compares two directories or files side-by-side. Supports directory diffing, rename detection, and highlights changes in quickfix list. The plugin is not loaded by default; use `:packadd nvim.difftool` before invoking `:DiffTool`. Example `git difftool -d` integration using `DiffTool` command: >ini [difftool "nvim_difftool"] cmd = nvim -c \"packadd nvim.difftool\" -c \"DiffTool $LOCAL $REMOTE\" [diff] tool = nvim_difftool < open({left}, {right}, {opt}) *difftool.open()* Diff two files or directories Parameters: ~ • {left} (`string`) • {right} (`string`) • {opt} (`table?`) • {rename.detect} (`boolean`, default: `false`) Whether to detect renames • {rename.similarity} (`number`, default: `0.5`) Minimum similarity for rename detection (0 to 1) • {rename.chunk_size} (`number`, default: `4096`) Maximum chunk size to read from files for similarity calculation • {method} (`'auto'|'builtin'|'diffr'`, default: `auto`) Diff method to use • {ignore} (`string[]`, default: `{}`) List of file patterns to ignore (for example: `'.git', '*.log'`) • {rename} (`table`) Controls rename detection ============================================================================== Builtin plugin: editorconfig *editorconfig* EditorConfig is like 'modeline' for an entire (recursive) directory. When a file is opened, after running |ftplugin|s and |FileType| autocommands, the EditorConfig feature searches all parent directories of that file for `.editorconfig` files, parses them, and applies their properties. For more information see https://editorconfig.org/. Example `.editorconfig` file: >ini root = true [*] charset = utf-8 end_of_line = lf indent_size = 4 indent_style = space max_line_length = 42 trim_trailing_whitespace = true [*.{diff,md}] trim_trailing_whitespace = false < *g:editorconfig* *b:editorconfig* EditorConfig is enabled by default. To disable it, add to your config: >lua 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-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: >lua 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 < *editorconfig-properties* The following properties are supported by default: charset *editorconfig.charset* One of `"utf-8"`, `"utf-8-bom"`, `"latin1"`, `"utf-16be"`, or `"utf-16le"`. Sets the 'fileencoding' and 'bomb' options. end_of_line *editorconfig.end_of_line* One of `"lf"`, `"crlf"`, or `"cr"`. These correspond to setting 'fileformat' to "unix", "dos", or "mac", respectively. indent_size *editorconfig.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. If this value is not "tab" and the tab_width property is not set, 'tabstop' is also set to this value. indent_style *editorconfig.indent_style* One of `"tab"` or `"space"`. Sets the 'expandtab' option. insert_final_newline *editorconfig.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. max_line_length *editorconfig.max_line_length* A number indicating the maximum length of a single line. Sets the 'textwidth' option. root *editorconfig.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). spelling_language *editorconfig.spelling_language* A code of the format ss or ss-TT, where ss is an ISO 639 language code and TT is an ISO 3166 territory identifier. Sets the 'spelllang' option. tab_width *editorconfig.tab_width* The display size of a single tab character. Sets the 'tabstop' option. trim_trailing_whitespace *editorconfig.trim_trailing_whitespace* When `"true"`, trailing whitespace is automatically removed when the buffer is written. ============================================================================== Builtin plugin: spellfile *spellfile.lua* Asks the user to download missing spellfiles. The spellfile is written to `stdpath('data') .. 'site/spell'` or the first writable directory in the 'runtimepath'. The plugin can be disabled by setting `g:loaded_spellfile_plugin = 1`. *nvim.spellfile.Opts* A table with the following fields: Fields: ~ • {url} (`string`) The base URL from where the spellfiles are downloaded. Uses `g:spellfile_URL` if it's set, otherwise https://ftp.nluug.nl/pub/vim/runtime/spell. • {timeout_ms} (`integer`, default: 15000) Number of milliseconds after which the |vim.net.request()| times out. • {confirm} (`boolean`, default: `true`) Whether to ask user to confirm download. config({opts}) *spellfile.config()* Configure spellfile download options. For example: >lua require('nvim.spellfile').config({ url = '...' }) < Parameters: ~ • {opts} (`nvim.spellfile.Opts?`) When omitted or `nil`, retrieve the current configuration. Otherwise, a configuration table. Return: ~ (`nvim.spellfile.Opts?`) Current config if {opts} is omitted. get({lang}) *spellfile.get()* Download spellfiles for language {lang} if available. Parameters: ~ • {lang} (`string`) Language code. Return: ~ (`table?`) A table with the following fields: • {files} (`string[]`) • {key} (`string`) • {lang} (`string`) • {encoding} (`string`) • {dir} (`string`) ============================================================================== Builtin plugin: tohtml *tohtml* :[range]TOhtml {file} *:TOhtml* Converts the buffer shown in the current window to HTML, opens the generated HTML in a new split window, and saves its contents to {file}. If {file} is not given, a temporary file (created by |tempname()|) is used. tohtml({winid}, {opt}) *tohtml.tohtml()* Converts the buffer shown in the window {winid} to HTML and returns the output as a list of string. Parameters: ~ • {winid} (`integer?`) Window to convert (defaults to current window) • {opt} (`table?`) Optional parameters. • {title}? (`string|false`, default: buffer name) Title tag to set in the generated HTML code. • {number_lines}? (`boolean`, default: `false`) Show line numbers. • {font}? (`string[]|string`, default: `guifont`) Fonts to use. • {width}? (`integer`, default: 'textwidth' if non-zero or window width otherwise) Width used for items which are either right aligned or repeat a character infinitely. • {range}? (`integer[]`, default: entire buffer) Range of rows to use. Return: ~ (`string[]`) ============================================================================== Builtin plugin: undotree *undotree-plugin* open({opts}) *undotree.open()* Open a window that displays a textual representation of the |undo-tree|. While in the window, moving the cursor changes the undo. Closes the window if it is already open Load the plugin with this command: > packadd nvim.undotree < Can also be shown with `:Undotree`. *:Undotree* Parameters: ~ • {opts} (`table?`) A table with the following fields: • {bufnr} (`integer?`) Buffer to draw the tree into. If omitted, a new buffer is created. • {winid} (`integer?`) Window id to display the tree buffer in. If omitted, a new window is created with {command}. • {command} (`string?`) Vimscript command to create the window. Default value is "30vnew". Only used when {winid} is nil. • {title} (`(string|fun(bufnr:integer):string?)?`) Title of the window. If a function, it accepts the buffer number of the source buffer as its only argument and should return a string. Return: ~ (`boolean?`) Returns true if the window was already open, nil otherwise vim:tw=78:ts=8:sw=4:sts=4:et:ft=help:norl: