nvs

December 6, 2025 ยท View on GitHub

Neovim Version Switcher โ€“ Install, switch, and manage multiple Neovim versions with ease ๐Ÿš€

CI GitHub release License Go Report Card


Why nvs?

Managing multiple Neovim versions shouldn't be complicated. nvs makes it simple:

  • โšก Instant Switching โ€“ Switch between versions in milliseconds
  • ๐Ÿ“Œ Per-Project Versions โ€“ Pin versions with .nvs-version files
  • ๐Ÿ”„ Auto-Switch โ€“ Automatically switch versions when changing directories
  • ๐ŸŒ™ Nightly Support โ€“ First-class support for nightly builds with rollback capability
  • ๐Ÿ”ง Build from Source โ€“ Install any commit directly from the Neovim repository
  • ๐Ÿ”€ Config Switching โ€“ Toggle between multiple Neovim configurations
  • ๐Ÿฉบ Self-Diagnosing โ€“ Built-in health checks with nvs doctor
$ nvs use stable
โœ“ Switched to Neovim stable

$ nvim -v
NVIM v0.10.4
Build type: Release
LuaJIT 2.1.1713484068

$ nvs use nightly
โœ“ Switched to Neovim nightly

$ nvim -v
NVIM v0.11.0-dev-1961+g7e2b75760f
Build type: RelWithDebInfo
LuaJIT 2.1.1741571767

Quick Start

1. Install nvs

macOS / Linux:

curl -fsSL https://raw.githubusercontent.com/y3owk1n/nvs/main/install.sh | bash

Windows (PowerShell):

Invoke-WebRequest -Uri "https://raw.githubusercontent.com/y3owk1n/nvs/main/install.ps1" -OutFile "install.ps1"; .\install.ps1

Other methods: Homebrew ยท Nix ยท From Source

2. Set Up Your Shell

Add to your shell configuration (~/.bashrc, ~/.zshrc, or ~/.config/fish/config.fish):

# Bash/Zsh
eval "$(nvs env --source)"

# Fish
nvs env --source | source

3. Install and Use Neovim

nvs install stable    # Install stable release
nvs use stable        # Switch to stable
nvim --version        # Verify installation

Command Reference

CommandDescription
nvs install <version>Install a Neovim version (stable, nightly, v0.10.3, commit hash)
nvs install --pickInstall with interactive version picker
nvs use <version>Switch to an installed version
nvs use --pickSwitch with interactive version picker
nvs listList installed versions
nvs list-remoteList available remote versions
nvs currentShow currently active version
nvs upgradeUpgrade stable and/or nightly versions
nvs upgrade --pickUpgrade with interactive version picker
nvs uninstall <version>Remove an installed version
nvs uninstall --pickRemove with interactive version picker
nvs pin [version]Pin version to current directory (.nvs-version)
nvs pin --pickPin with interactive version picker
nvs rollbackRollback to a previous nightly version
nvs run <version>Run a version without switching
nvs run --pickRun with interactive version picker
nvs configSwitch Neovim configuration
nvs doctorCheck system health
nvs hook <shell>Generate shell hook for auto-switching

See the Usage Guide for detailed examples and options.


Features

Version Management

Install any Neovim version โ€“ stable releases, nightly builds, specific tags, or even build from any commit:

nvs install stable           # Latest stable
nvs install nightly          # Latest nightly
nvs install v0.10.3          # Specific version
nvs install 2db1ae3          # Build from commit

Per-Project Version Pinning

Pin a Neovim version to your project directory:

nvs pin stable               # Creates .nvs-version
nvs use                      # Reads from .nvs-version

Enable auto-switching to automatically switch versions when entering a directory:

# Add to shell config
eval "$(nvs hook bash)"      # or zsh/fish

Nightly Management

Keep multiple nightly versions and rollback when needed:

nvs upgrade nightly          # Upgrade to latest nightly
nvs rollback                 # List available rollback versions
nvs rollback 0               # Rollback to most recent previous

Configuration Switching

Manage multiple Neovim configurations:

nvs config                   # Interactive selection
nvs config nvim-test         # Direct switch

Scripting Support

All listing and status commands support --json for machine-readable output:

nvs list --json              # Installed versions as JSON
nvs current --json           # Current version details as JSON
nvs doctor --json            # System checks as JSON

System Requirements

PlatformArchitectureStatus
macOSIntel (amd64)โœ… Fully supported
macOSApple Silicon (arm64)โœ… Fully supported
Linuxamd64โœ… Fully supported
Linuxarm64โœ… Fully supported
Windowsamd64โœ… Fully supported
Windowsarm64โœ… Fully supported

Base dependencies: git, curl, tar Build dependencies: make, cmake, gettext, ninja (nvs checks for these automatically)


Documentation

DocumentDescription
Installation GuideAll installation methods and troubleshooting
Usage GuideComplete command reference with examples
ConfigurationEnvironment setup and customization
DevelopmentArchitecture and development setup
ContributingHow to contribute to nvs

Contributing

Contributions are welcome! See the Contributing Guide to get started.

git clone https://github.com/y3owk1n/nvs.git
cd nvs
just test    # Run tests
just lint    # Run linter
just build   # Build binary

License

MIT License ยฉ Kyle Wong