Neovim is a free, open source ides & code editors project written in Vim Script and released under a custom open-source licence. It has 102,393 GitHub stars, 7,115 forks and 1,900 open issues, and was last pushed 12 hours ago. On this registry it ranks #1 of 4 tracked projects in IDEs & Code Editors, with 5 head-to-head comparisons available. It gained 104 stars over the last 6 tracked days.

Neovim — Hyperextensible, Lua-powered Vim-based text editor

What is Neovim?

What it is

Neovim is a Vim-fork text editor focused on extensibility and usability, built as a modern refactoring of Vim’s codebase. It lives in the developer tools ecosystem, specifically as a terminal-based code editor that maintains compatibility with Vim’s core editing model while adding new capabilities.

The project solves the problem of Vim’s monolithic architecture, which made it difficult to integrate modern features, support concurrent development, or enable rich UIs without core modifications. Neovim decouples the core editor engine from its user interface, allowing external GUIs and tools to interact via a stable API.

Key capabilities

  • Asynchronous job control for running background processes without blocking the editor
  • Embedded terminal emulator with full terminal emulation support
  • Lua-powered extensibility with first-class API access for scripting
  • Remote API access from any language via msgpack-rpc, enabling language-agnostic plugins
  • Shared undo history (shada) across multiple editor instances
  • XDG base directory support for standardized configuration and data paths
  • Full compatibility with most existing Vim plugins, including Ruby and Python ones

Who uses it and how

Developers use Neovim as a lightweight, scriptable alternative to full IDEs, especially in terminal-heavy or remote workflows (e.g., SSH sessions, containerized dev environments). Teams adopt it for consistent, version-controlled editor configurations shared across machines via Git. Plugin authors build Neovim-native tools using its Lua API or external clients using its remote API to integrate with IDE-like features (e.g., LSP clients, tree-sitter integrations).

Getting started

Pre-built packages are available for Windows, macOS, and Linux via GitHub Releases or system package managers (Homebrew, apt, dnf, pacman). It can also be built from source using CMake or the provided Makefile, with make CMAKE_BUILD_TYPE=RelWithDebInfo sudo make install as the standard install command.

When to use it — and when not to

Neovim replaces parts of the Vim ecosystem with a more modular, API-driven architecture, but requires manual setup of dependencies (e.g., LSP servers, tree-sitter parsers) and UI components (e.g., GUI frontends like nvim-qt). It is ideal for users comfortable with terminal workflows and configuration via Lua/Vimscript, but less suitable for those needing out-of-the-box IDE features or preferring mouse-driven interaction. Self-hosters must manage their own plugin ecosystem, configuration persistence (via ~/.config/nvim), and optional services like SMTP if email notifications are needed.

project readme (upstream, from github) — read inline

Neovim

Documentation | Chat

Coverity Scan analysis Packages Debian CI Downloads

Neovim is a project that seeks to aggressively refactor Vim in order to:

See the Introduction wiki page and Roadmap for more information.

Features

See :help nvim-features for the full list, and :help news for noteworthy changes in the latest version!

Install from package

Pre-built packages for Windows, macOS, and Linux are found on the Releases page.

Managed packages are in Homebrew, Debian, Ubuntu, Fedora, Arch Linux, Void Linux, Gentoo, and more!

Install from source

See BUILD.md and supported platforms for details.

The build is CMake-based, but a Makefile is provided as a convenience. After installing the dependencies, run the following command.

make CMAKE_BUILD_TYPE=RelWithDebInfo
sudo make install

To install to a non-default location:

make CMAKE_BUILD_TYPE=RelWithDebInfo CMAKE_INSTALL_PREFIX=/full/path/
make install

CMake hints for inspecting the build:

  • cmake --build build --target help lists all build targets.
  • build/CMakeCache.txt (or cmake -LAH build/) contains the resolved values of all CMake variables.
  • build/compile_commands.json shows the full compiler invocations for each translation unit.

Transitioning from Vim

See :help nvim-from-vim for instructions.

Project layout

├─ cmake/           CMake utils
├─ cmake.config/    CMake defines
├─ cmake.deps/      subproject to fetch and build dependencies (optional)
├─ runtime/         plugins and docs
├─ src/nvim/        application source code (see src/nvim/README.md)
│  ├─ api/          API subsystem
│  ├─ eval/         Vimscript subsystem
│  ├─ event/        event-loop subsystem
│  ├─ generators/   code generation (pre-compilation)
│  ├─ lib/          generic data structures
│  ├─ lua/          Lua subsystem
│  ├─ msgpack_rpc/  RPC subsystem
│  ├─ os/           low-level platform code
│  └─ tui/          built-in UI
└─ test/            tests (see test/README.md)

License

Neovim contributions since b17d96 are licensed under the Apache 2.0 license, except for contributions copied from Vim (identified by the vim-patch token). See LICENSE.txt for details.

Frequently asked questions

Is Neovim free to use?

Neovim is open source. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does Neovim do?

Hyperextensible, Lua-powered Vim-based text editor

What is Neovim written in?

Neovim is primarily written in Vim Script. Its source is publicly available at https://github.com/neovim/neovim, and it has 102,393 GitHub stars.