Files
neovim/runtime/doc/plugins.txt
2025-12-15 13:55:15 -05:00

303 lines
12 KiB
Plaintext

*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: