Built for the way you work

Every feature in Neovim is designed with composability in mind. Mix, match, and extend to create an editor that's entirely your own.

Built-in LSP Client

Native Language Server Protocol support baked right into the core. No plugin required. Configure any language server with a few lines of Lua and get completion, hover docs, go-to-definition, diagnostics, code actions, rename, and formatting — for any language that has an LSP server.

require("lspconfig").tsserver.setup({
  on_attach = function(client, bufnr)
    vim.keymap.set("n", "gd", vim.lsp.buf.definition, { buffer = bufnr })
  end,
})

Lua-first Config

Configure everything in Lua 5.1+. A real, fast scripting language with full access to the editor API. Write plugins, keymaps, autocmds, and UI customizations without any Vimscript.

True Async

Job control and timers run asynchronously. Long-running operations — linting, building, formatting — never freeze the editor. Stay in flow, always.

Tree-sitter Integration

Accurate, incremental syntax trees. Get precise highlighting, structural editing, and code navigation based on actual parse trees — not regexes.

Extensible Plugin API

A stable, rich API exposed over RPC. Write plugins in any language that speaks msgpack-RPC: Python, Ruby, Go, Rust, Node.js. The editor is your platform.

Floating Windows

Create arbitrary floating windows anywhere on screen. Plugins use them for completion menus, preview panels, diagnostics, and interactive UIs that feel native.

Vim Compatibility

Neovim is a drop-in superset of Vim. Your existing .vimrc, muscle memory, and Vimscript plugins work out of the box. Migrate at your own pace — or not at all. The power of Vi is the foundation.