# Neovim
Neovim is a modern fork of [[Vim]], focused on extensibility, usability, and embeddability. Started in 2014 by Thiago de Arruda, it refactored Vim's codebase to enable better plugin architecture, built-in [[Language Server Protocol (LSP)]] support, and Lua-based configuration — while maintaining full compatibility with Vim's editing model.
## Key differences from Vim
- **Lua scripting**: First-class Lua support alongside Vimscript, enabling faster and more maintainable configuration
- **Built-in LSP client**: Native [[Language Server Protocol (LSP)]] support for code completion, diagnostics, and refactoring
- **Tree-sitter integration**: Incremental parsing for better syntax highlighting and code understanding
- **Async architecture**: Built-in job control and async I/O
- **Embeddable**: Designed as a component — GUIs and IDEs can embed Neovim as an editing engine
- **Sensible defaults**: Better out-of-the-box experience than Vim
## Installation
```sh
# Arch
pacman -S neovim
# Debian/Ubuntu
sudo apt install neovim
# macOS
brew install neovim
```
## Configuration
Neovim is configured via `~/.config/nvim/init.lua` (Lua) or `~/.config/nvim/init.vim` (Vimscript):
```lua
-- init.lua example
vim.opt.number = true
vim.opt.relativenumber = true
vim.opt.expandtab = true
vim.opt.shiftwidth = 4
vim.opt.tabstop = 4
vim.opt.termguicolors = true
```
## Popular plugin ecosystem
- **telescope.nvim**: Fuzzy finder (uses [[ripgrep]] and [[fzf]]-style matching)
- **nvim-treesitter**: Tree-sitter configurations
- **nvim-lspconfig**: LSP server configuration
- **lazy.nvim**: Modern plugin manager
- **nvim-cmp**: Autocompletion
- **neo-tree.nvim**: File explorer
- **lualine.nvim**: Status line
## Starter distributions
Pre-configured Neovim setups for quick onboarding:
- **LazyVim**: Full-featured IDE layer
- **AstroNvim**: Aesthetic and functional
- **NvChad**: Fast and minimal
- **kickstart.nvim**: Minimal starting point by TJ DeVries
## References
- https://neovim.io/
- https://github.com/neovim/neovim
- https://en.wikipedia.org/wiki/Neovim
## Related
- [[Vim]]
- [[Vi]]
- [[Nano]]
- [[Language Server Protocol (LSP)]]
- [[ripgrep]]
- [[fzf]]
- [[TMux]]
- [[Git]]
- [[Command Line Interface (CLI)]]
- [[Shell]]
- [[Linux]]
- [[Visual Studio Code (VSCode)]]