Neovim插件Mason
Portable package manager for Neovim that runs everywhere Neovim
runs.
Easily install and manage LSP servers, DAP servers, linters,
and formatters.
:help mason.nvim
Latest version: v1.8.0
Table of Contents
- [Introduction](#introduction)
- [How to use installed packages](#how-to-use-installed-packages)
- [Screenshots](#screenshots)
- [Requirements](#requirements)
- [Installation](#installation)
- [Setup](#setup)
- [Extensions](#extensions)
- [Commands](#commands)
- [Registries](#registries)
Introduction
> [`:h mason-introduction`][help-mason-introduction]
`mason.nvim` is a Neovim plugin that allows you to easily manage external editor tooling such as LSP servers, DAP servers,
linters, and formatters through a single interface. It runs everywhere Neovim runs (across Linux, macOS, Windows, etc.),
with only a small set of [external requirements](#requirements) needed.
Packages are installed in Neovim's data directory ([`:h standard-path`][help-standard-path]) by default. Executables are
linked to a single `bin/` directory, which `mason.nvim` will add to Neovim's PATH during setup, allowing seamless access
from Neovim builtins (shell, terminal, etc.) as well as other 3rd party plugins.
For a list of all available packages, see <https://mason-registry.dev/registry/list>.
How to use installed packages
> [`:h mason-how-to-use-packages`][help-mason-how-to-use-packages]
Although many packages are perfectly usable out of the box through Neovim builtins, it is recommended to use other 3rd
party plugins to further integrate these. The following plugins are recommended:
- LSP: [`lspconfig`][lspconfig] & [`mason-lspconfig.nvim`][mason-lspconfig.nvim]
- DAP: [`nvim-dap`][nvim-dap] & [`nvim-dap-ui`][nvim-dap-ui]
- Linters: [`null-ls.nvim`][null-ls.nvim] or [`nvim-lint`][nvim-lint]
- Formatters: [`null-ls.nvim`][null-ls.nvim] or [`formatter.nvim`][formatter.nvim]
[formatter.nvim]: https://github.com/mhartington/formatter.nvim
[lspconfig]: https://github.com/neovim/nvim-lspconfig
[mason-lspconfig.nvim]: https://github.com/williamboman/mason-lspconfig.nvim
[null-ls.nvim]: https://github.com/jose-elias-alvarez/null-ls.nvim
[nvim-dap]: https://github.com/mfussenegger/nvim-dap
[nvim-dap-ui]: https://github.com/rcarriga/nvim-dap-ui
[nvim-lint]: https://github.com/mfussenegger/nvim-lint
Screenshots
| | | |
| :----------------------------------------------------------------------------------------------------------------------------------------------------: | :----------------------------------------------------------------------------------------------------------------------------------------------: | :------------------------------------------------------------------------------------------------------------------------------------: |
| <img alt="Main window" src="https://user-images.githubusercontent.com/6705160/177617680-d62caf26-f253-4ace-ab57-4b590595adca.png"> | <img src="https://user-images.githubusercontent.com/6705160/177617684-6bb4c13f-1235-4ac9-829e-120b06f7437b.png"> | <img alt="Language filter" src="https://user-images.githubusercontent.com/6705160/177617688-8f9ba225-00c8-495c-9c4c-b74240d6f280.png"> |
| <img alt="LSP server configuration schema" src="https://user-images.githubusercontent.com/6705160/177617692-02c6ddde-a97e-42b4-bca4-4f4caf45d569.png"> | <img alt="Checking for new versions" src="https://user-images.githubusercontent.com/6705160/180648183-69077d10-8795-4da6-ba4d-57ecf0cb25c9.png"> | <img alt="Help window" src="https://user-images.githubusercontent.com/6705160/180648292-136a0888-0fb6-4226-aa29-53bd3ffed400.png"> |
Requirements
> [`:h mason-requirements`][help-mason-requirements]
`mason.nvim` relaxes the minimum requirements by attempting multiple different utilities (for example, `wget`,
`curl`, and `Invoke-WebRequest` are all perfect substitutes).
The _minimum_ recommended requirements are:
- neovim `>= 0.7.0`
- For Unix systems:
- `git(1)`
- `curl(1)` or `wget(1)`
- `unzip(1)`
- GNU tar (
tar(1)
orgtar(1)
depending on platform)gzip(1)
- For Windows systems:
- pwsh or powershell
- git
- GNU tar
- One of the following:
- 7zip
- peazip
- archiver
- winzip
- WinRAR
mason.nvim
will regularly shell out to external package managers, such ascargo
andnpm
. Depending on your personal usage, some of these will also need to be installed. Refer to:checkhealth mason
for a full list.
Installation
Packer
1
2
3
use {
"williamboman/mason.nvim"
}
lazy.nvim
1 | { |
vim-plug
1 | Plug 'williamboman/mason.nvim' |
Setup
1 | require("mason").setup() |
mason.nvim
is optimized to load as little as possible
during setup. Lazy-loading the plugin, or somehow deferring the setup,
is not recommended.
Refer to the Configuration section for information about which settings are available.
Extensions
Refer to the Wiki for a list of 3rd party extensions.
mason-lspconfig.nvim
- recommended for usage withlspconfig
Commands
:Mason
- opens a graphical status window:MasonUpdate
- updates all managed registries:MasonInstall <package> ...
- installs/re-installs the provided packages:MasonUninstall <package> ...
- uninstalls the provided packages:MasonUninstallAll
- uninstalls all packages:MasonLog
- opens themason.nvim
log file in a new tab window
Registries
Mason's core package registry is located at mason-org/mason-registry.
Before any packages can be used, the registry needs to be downloaded.
This is done automatically for you when using the different Mason
commands (e.g. :MasonInstall
), but can also be done
manually by using the :MasonUpdate
command.
If you're utilizing Mason's Lua APIs to access packages, it's
recommended to use the :h mason-registry.refresh()
and/or :h mason-registry.update()
functions to ensure you have the latest package information before
retrieving packages.
Configuration
You may optionally configure certain behavior of
mason.nvim
when calling the .setup()
function.
Refer to the default configuration
for a list of all available settings.
Example:
1 | require("mason").setup({ |
Default configuration
1 | ---@class MasonSettings |
👋 didn't find what you were looking for? Try looking in the
help docs :help mason.nvim
!