NeoVim
NeoVim is a refactor of Vim that replaces the monolithic architecture with an event-driven core, a MsgPack RPC API, and first-class Lua scripting. It ships with built-in LSP client, tree-sitter integration, and (as of 0.12) a built-in package manager.
Overview
- Repo: github.com/neovim/neovim
- Language: C core, Lua runtime, generated code via Lua scripts
- Config:
~/.config/nvim/init.lua(orinit.vim) - Install:
brew install neovim/apt install neovim/ build from source - Current version: 0.12 (dev), 0.11 (stable)
- Source explored:
_repos/neovim-neovim/
Contents
Concepts
- Architecture - Event loop, UI protocol, RPC, and the C/Lua bridge
- Lua API - The
vim.*namespace, lazy loading, module structure - Plugin System - Built-in package manager, runtimepath,
vim.pack.add()
Quickstart
- Configuration - init.lua, options, keymaps, autocmds
- LSP Setup -
vim.lsp.config,vim.lsp.enable, completion - Tree-sitter - Highlighting, folds, queries
Deep Dives
- LSP Internals - Client lifecycle, RPC transport, handlers, capability negotiation
- Tree-sitter Internals - LanguageTree, query system, injection, incremental parsing
Notes
- Version History - What changed in 0.9 through 0.12
- Default Keymaps - Built-in defaults worth knowing
Resources
- Lua Guide - Official guide to Lua in NeoVim
- LSP Docs - Built-in LSP client reference
- API Reference - Remote API documentation
- Source Code - Cloned repo for exploration