Neovim is a Vim-based text editor refactored for extensibility, with a Lua and RPC API that lets plugins and external UIs drive the editor.
neovim/nvim-lspconfig
A collection of ready-made Language Server Protocol configurations for connecting Neovim to many programming language servers.
- Stars
- 14,000
- Forks
- 2,502
- Open issues
- 40
- Last commit
- 7 hours ago
What is it?
nvim-lspconfig provides server-specific configuration files for the LSP client built into Neovim. Each config tells Neovim how to launch a language server, which filetypes it applies to, and how to detect the project root, so that code completion, diagnostics and navigation work without writing that setup by hand.
Users enable a server with vim.lsp.enable() after installing the server binary themselves; the plugin does not install servers. Custom settings can be added on top of the defaults with vim.lsp.config(), and the plugin ships Lua type annotations for server settings to enable completion and diagnostics in the config file.
The project is moving from its legacy require('lspconfig') framework, which is deprecated, toward the native vim.lsp.config API introduced in Nvim 0.11. The configs themselves remain the supported part and live in the lsp/ directory.
Key features
- 01Ships configs for many language servers in the lsp/ directory.
- 02Enable a server with a single vim.lsp.enable() call.
- 03Override defaults with vim.lsp.config() or after/lsp/ files.
- 04Provides Lua type annotations for server settings.
- 05Includes root marker detection so servers attach to the right project.
Use cases
- Setting up code completion and diagnostics for Python, Rust or Lua in Neovim.
- Standardizing LSP configuration across a team's Neovim setups.
- Adding a language server that is not yet covered by the built-in configs.
Quick start
- 1
Install a language server, e.g. pyright
npm i -g pyright - 2
Enable its config in your init.lua
vim.lsp.enable('pyright') - 3
Open a code file in Nvim so LSP attaches
nvim main.py
Things to know
- Requires Nvim 0.11.3+ and does not install language servers for you.
- The legacy require('lspconfig') framework is deprecated in favor of vim.lsp.config.
Topics
FAQ
- What is nvim-lspconfig?
- A collection of ready-made Language Server Protocol configurations for connecting Neovim to many programming language servers. nvim-lspconfig provides server-specific configuration files for the LSP client built into Neovim. Each config tells Neovim how to launch a language server, which filetypes it applies to, and how to detect the project root, so that code completion, diagnostics and navigation work without writing that setup by hand.
- Is nvim-lspconfig free to use? What license does it have?
- nvim-lspconfig is open source under the Apache-2.0 license. Check the license terms before using it in commercial products.
- Is nvim-lspconfig still maintained?
- Actively maintained. The last commit to nvim-lspconfig was on Nov 6, 2026.
- What can I use nvim-lspconfig for?
- Setting up code completion and diagnostics for Python, Rust or Lua in Neovim. Standardizing LSP configuration across a team's Neovim setups. Adding a language server that is not yet covered by the built-in configs.
- How do I install nvim-lspconfig?
- Install a language server, e.g. pyright: npm i -g pyright Enable its config in your init.lua: vim.lsp.enable('pyright') Open a code file in Nvim so LSP attaches: nvim main.py
- Where can I get nvim-lspconfig?
- The source code and installation instructions are on GitHub: https://github.com/neovim/nvim-lspconfig
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
A Vim and Neovim plugin that lints code asynchronously while you type, runs fixers like prettier and eslint, and acts as an LSP client.
A Neovim plugin for browsing the file system and other tree-like structures in sidebar, floating, or netrw-style layouts.
A fast Python type checker and language server, written in Rust, with IDE features like navigation, completion and semantic highlighting.
Official Elixir Language Server Protocol implementation that gives editors code intelligence for Elixir projects.
A lightweight, extensible statusline and tabline plugin for Vim that shows mode, git status, file info and position.