This Neovim config is written from scratch and is my daily driver for 95% of my programming work. The main focus of this Neovim config is to stay close to the native Neovim experience while still providing some nice-to-haves. My personal motivation for this is to avoid my annoyance of having to essentially relearn Neovim anytime I attempt to edit some files on a remote server or some other machine with a default-like Neovim config.
This config is built mainly for Arch-based Linux distributions, but may work on many other distributions (no guarantees provided). I have no clue about this config's MacOS and Windows support (so assume unsupported). The install script only works on Arch-based Linux distributions.
The language servers and parsers for the following languages are installed by default:
| Language | Mason package | Language server |
|---|---|---|
| Bash | bash-language-server | bashls |
| C | clangd | clangd |
| C++ | clangd | clangd |
| C# | csharp-language-server | csharp_ls |
| CSS | css-lsp | cssls |
| Go | gopls | gopls |
| HTML | html-lsp | html |
| JavaScript | vtsls | vtsls |
| JSON | json-lsp | jsonls |
| JSX | vtsls | vtsls |
| Lua | lua-language-server | lua_ls |
| Markdown | marksman | marksman |
| Python | pyright | pyright |
| Rust | rust-analyzer | rust_analyzer |
| TOML | taplo | taplo |
| Tailwind CSS | tailwindcss-language-server | tailwindcss |
| TypeScript | vtsls | vtsls |
| TSX | vtsls | vtsls |
| XML | lemminx | lemminx |
| YAML | yaml-language-server | yamlls |
The following are the config's dependencies:
- Neovim v0.12.0+
- In you PATH:
tar(GNU Tar)curl(cURL)tree-sitter(Tree-sitter CLI v0.26.1+)- Tree-sitter must NOT be installed from npm.
go(Go CLI)dotnet(.NET CLI)npm(npm CLI)
The installation script (see Installation: Method A) should automatically install all the required dependencies. The Go, npm, and .NET CLIs are used to install the language server binaries.
There are multiple ways of installing the config. Method A is automatic and recommended if supported by your system.
The command below executes an install script and should automagically install the Neovim
config and its dependencies. It only works on Arch-based Linux distributions using pacman. A backup
of your current Neovim config is automatically created before installation happens.
curl -L "https://raw.githubusercontent.com/borgaar/nvim/main/install.sh" | /bin/bashWarning
Do not install Tree-sitter CLI from NPM.
- Create a backup of your current config if you have one:
mv "$HOME/.config/nvim" "$HOME/.config/nvim.backup"
- Make sure you have Neovim v0.12.0+. If not, install it.
- Make sure you have installed the following and that they are in your PATH:
tar(GNU Tar)curl(cURL)tree-sitter(Tree-sitter CLI v0.26.1+)- Do NOT install Tree-sitter from npm.
go(Go CLI)dotnet(.NET CLI)npm(npm CLI)
- Install the Neovim config itself:
git clone "https://github.com/borgaar/nvim" "$HOME/.config/nvim"