- Overview
- Prerequisites
- Installation Philosophy
- Required Dependencies
- Required Tools Overview
- Installation Guide
This is a modern Neovim configuration focused on providing a comprehensive development environment with LSP support, code formatting, and essential development tools. The configuration supports multiple programming languages including Go, Python, Rust, Lua, Shell scripting, and various markup/configuration formats.
This configuration requires several types of tools to function properly:
- Neovim (>= 0.11.0) - The editor itself
- Language Servers - Provide LSP support (auto-completion, diagnostics, etc.) for various programming languages
- Formatters - Automatically format code according to language conventions
- Essential Tools - TreeSitter (syntax highlighting), ripgrep (fast search), fd (file finder), fzf (fuzzy finder)
You can install these tools using any method you prefer - package managers (homebrew, apt, yum), language-specific tools (npm, pip, cargo), or manual installation. The only requirement is that the binaries are available in your system PATH.
For convenience, we provide detailed installation instructions using mise below, but feel free to use your preferred installation method.
- Node.js - Required for npm-based language servers (bash-language-server, vscode-langservers-extracted, yaml-language-server, prettier)
- Python - Required for Python-based tools (pyright, ruff)
- Go - Required for Go-based tools (gopls, goimports)
- Rust - Required for Rust development and includes rustfmt formatter
nvim-treesitter uses the main branch and requires the following prerequisites:
- C compiler (gcc or clang) - Required to compile parsers
- Git - Used by TreeSitter to download parsers
- Node.js - Required for some parsers
The following tools are required for full functionality. You can install them using any method (homebrew, package managers, language tools, etc.) as long as they're available in your PATH.
Category | Tool Name | Binary Name | Type | Purpose | Official Documentation |
---|---|---|---|---|---|
Go | gopls | gopls |
LSP | Go language server | gopls |
goimports | goimports |
Formatter | Go import organizer | goimports | |
gofumpt | gofumpt |
Formatter | Go formatter | gofumpt | |
Python | Pyright | pyright-langserver |
LSP | Python language server | Pyright |
Ruff | ruff |
Formatter | Python formatter/linter | Ruff | |
Rust | rust-analyzer | rust-analyzer |
LSP | Rust language server | rust-analyzer |
rustfmt | rustfmt |
Formatter | Rust formatter | rustfmt | |
Lua | lua-language-server | lua-language-server |
LSP | Lua language server | lua-language-server |
StyLua | stylua |
Formatter | Lua formatter | StyLua | |
Shell | bash-language-server | bash-language-server |
LSP | Shell script LSP | bash-language-server |
shfmt | shfmt |
Formatter | Shell script formatter | shfmt | |
fish_indent | fish_indent |
Formatter | Fish shell formatter | fish | |
Web/Markup | vscode-langservers | vscode-json-language-server |
LSP | JSON/JSONC language server | vscode-langservers-extracted |
Prettier | prettier |
Formatter | JSON/Markdown formatter | Prettier | |
Config Files | Taplo | taplo |
LSP+Formatter | TOML language server | Taplo |
yaml-language-server | yaml-language-server |
LSP | YAML language server | yaml-language-server | |
Essential | Tree-sitter | tree-sitter |
Tool | Syntax highlighting | Tree-sitter |
ripgrep | rg |
Tool | Fast text search | ripgrep | |
fd | fd |
Tool | Fast file finder | fd | |
fzf | fzf |
Tool | Fuzzy finder | fzf |
We provide an automated installation script that installs all dependencies at once. See install-deps.sh
for the complete installation process.
Alternatively, you can install each tool manually using your preferred method - the only requirement is that the binaries are available in your system PATH.
Once you have installed all the required dependencies, you can install this Neovim configuration:
-
Backup your existing Neovim configuration (if any):
# Backup existing config mv ~/.config/nvim ~/.config/nvim.backup
-
Clone this repository to your Neovim configuration directory:
# Clone the configuration git clone https://github.com/aniaan/nvim.git ~/.config/nvim
-
Start Neovim:
nvim
-
Let the configuration initialize:
- The first time you run Neovim, it will automatically install and configure all plugins
- This may take a few minutes depending on your internet connection
- Once complete, restart Neovim to ensure everything is loaded properly
That's it! Your Neovim setup should now be ready for development.