
Neovim
github.com/neovim/neovim- Category
- Developer Tools
- Rank
- No. 52Tools index
- Pricing
- Open Source
- Type
- TOOL
- Builder
- neovim
- GitHub
- 102.2k stars
- Latest release
- nightly
- Date
About
A modern, extensible text editor that's a complete refactor of Vim. It features advanced APIs for any programming language, embedded terminal emulator, asynchronous operations, and compatibility with most Vim plugins while being easier to maintain and extend.
What it does
Neovim runs an editing engine that can serve either its built-in terminal interface or attached clients. It accepts files, standard input, startup commands, remote requests, and headless operation. Local sockets, named pipes, or TCP carry editor requests and screen updates.
Why it's ranked here
Neovim is compelling when the editor must act as both an interactive workspace and a programmable service. Its separate UI architecture, multilingual API clients, asynchronous jobs, shared session data, and broad Vim plugin compatibility create unusually flexible integration options.
What's good
External interfaces can attach without changing the core. The API supports clients across many named languages, while asynchronous jobs keep background work practical. Users also get a scriptable terminal, shared data between editor instances, XDG directory support, and extensive package availability.
Tradeoffs
Compatibility covers most Vim plugins, not every plugin. Upgrades require checking documented breaking changes. Building from source needs platform prerequisites and a CMake-based toolchain, while Windows has several distinct build routes. A modern desktop GUI comes from related projects rather than the core package alone.
How to use it well
Choose Neovim for keyboard-driven editing, terminal-centered development, remote control, or a custom interface backed by an editor service. Start with a managed or prebuilt package, then add compatible plugins and API clients deliberately. Look elsewhere if you need a bundled modern desktop GUI without assembling related components.
Technical notes+
src/nvim/main.c initializes the event loop, channels, terminal subsystem, UI, Lua interpreter, headless mode, embedded mode, remote requests, and the editor server. src/nvim/msgpack_rpc/server.c accepts RPC connections over TCP, Unix sockets, or Windows named pipes and caps each listener at 32 connections. Makefile wraps the CMake build, exposes nvim and libnvim targets, and provides functional tests, unit tests, formatting, linting, benchmarks, installation, and AppImage targets. src/wasm/app.js implements a browser grid UI over RPC using a worker transport; it requires cross-origin isolation for SharedArrayBuffer. BUILD.md documents bundled dependency fetching, multiple build types, Windows toolchains, localization, and source installation.
Observed
- License
- Apache 2.0 covers Neovim contributions, except contributions copied from Vim, which are identified separately.
- Implementation
- The core application and RPC server are implemented in C; repository tooling and runtime surfaces also include Lua, Python, and JavaScript.
- Install surface
- Prebuilt packages are provided for Windows, macOS, and Linux, with managed packages listed for Homebrew and several Linux distributions.
- Interfaces
- Provides a built-in terminal UI, external UI support, command-line operation, and an RPC API with clients in many languages.
- Platform support
- Installation documentation covers Windows, macOS, Linux, BSD, Cygwin, MSYS2, MinGW, and WSL workflows.
- Repository structure
- The project separates API, event loop, Lua, RPC, operating-system, terminal UI, generated-source, runtime, and test areas.
Read from README.md, Makefile, src/bit.c, src/bit.h, src/coverity-model.c, src/nvim/main.c, src/nvim/main.h, src/wasm/app.js, src/nvim/msgpack_rpc/server.c, src/nvim/msgpack_rpc/server.h, scripts/shadacat.py, .clangd, .luacov, .mailmap, BUILD.md.
What it can do
Edit and manipulate text files
Text files of any format → Modified text files
Execute terminal commands within the editor
Shell commands → Command execution results in embedded terminal
Extend functionality through plugin installation
Vim-compatible plugins and configuration files → Enhanced editor with additional features
Perform asynchronous background operations
Long-running tasks or processes → Completed tasks without blocking the editor interface
Integrate with external tools via APIs
API calls from any programming language → Editor state changes and responses
Navigate and search through code and text
Search patterns and navigation commands → Located text positions and highlighted matches
Tags
Media

Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.