Bob

Struggle to keep your Neovim versions in check? Bob provides an easy way to install and switch versions on any system!

Bob is a cross-platform and easy-to-use Neovim version manager, allowing for easy switching between versions right from the command line.

🌟 Showcase

🔔 Notices

📦 Requirements

Make sure you don't have Neovim already installed via other ways e.g. a package manager.

Build prerequisites

Building bob

Make sure rustup is installed.

Building Neovim

For further information refer to the Neovim wiki.

All platforms

Windows

Unix

MacOS note: follow these instructions

🔧 Installation

Install from releases

  1. Download bob-{platform}-x86_64.zip
  2. Unzip it
  3. Run it with bob

Install from AUR

  1. Install the bob or bob-bin package with an AUR helper e.g. paru: paru -S bob
  2. Run it with bob

Install from source

  1. cargo install --git https://github.com/MordechaiHadad/bob.git
  2. Run bob with bob

Install from crates.io

  1. cargo install bob-nvim
  2. Run bob with bob

❓ Usage

A version-string can either be vx.x.x or x.x.x examples: v0.6.1 and 0.6.0


--no-install flag will prevent bob from auto invoking install command when using use

Switch to the specified version, by default will auto-invoke install command if the version is not installed already


Install the specified version, can also be used to update out-of-date nightly version.


If Config::syncversionfile_path is set, the version in that file will be parsed and installed.


Uninstall the specified version.


Rollback to an existing nightly rollback


Erase any change bob ever made including Neovim installation, Neovim version downloads and registry changes.


List all installed and used versions.


⚙ Configuration

This section is a bit more advanced and thus the user will have to do the work himself since bob doesn't do that.

Bob's configuration file will have to be in config_dir/bob/config.json, to be more specific:

On Linux

/home/user/.config/bob/config.json

On Windows

C:\Users\user\AppData\Roaming\bob\config.json

On MacOS

/Users/user/Library/Application Support/bob/config.json

Syntax

| Property | Description | Default Value | | -------------------------------| ---------------------------------------------------------------------------------------------------------------------------------------------------------------| --------------------------------------------------------------------------------------------------------------| | enablenightlyinfo | Will show new commits associated with new nightly release if enabled | true | | downloadslocation | The folder in which neovim versions will be downloaded to, bob will error if this option is specified but the folder doesn't exist | unix: /home/<username>/.local/share/bob, windows: C:\Users\<username>\AppData\Local\bob | | installationlocation | The path in which the proxied neovim installation will be located in | unix: /home/<username>/.local/share/bob/nvim-bin, windows: C:\Users\<username>\AppData\Local\bob\nvim-bin | | versionsyncfilelocation | The path to a file that will hold the neovim version string, useful for config version tracking, bob will error if the specified file is not a valid file path | Disabled by default | | rollbacklimit | The amount of rollbacks before bob starts to delete older ones, can be up to 255 | 3 |

Example

jsonc // /home/user/.config/bob/config.json { "enable_nightly_info": true, // Will show new commits associated with new nightly release if enabled "downloads_location": "$HOME/.local/share/bob", // The folder in which neovim versions will be installed too, bob will error if this option is specified but the folder doesn't exist "installation_location": "/home/user/.local/share/bob/nvim-bin", // The path in which the used neovim version will be located in "version_sync_file_location": "/home/user/.config/nvim/nvim.version", // The path to a file that will hold the neovim version string, useful for config version tracking, bob will error if the specified file is not a valid file path "rollback_limit": 3 // The amount of rollbacks before bob starts to delete older ones, can be up to 225 }

🛠️ Troubleshooting

sudo: nvim: command not found This error can be caused when secure_path is enabled in /etc/sudoers like in distros such as Fedora Workstation 37, possible workarounds:

  1. disable secure_path
  2. run sudo env "PATH=$PATH" nvim
  3. set $SUDO_USER to location of bob nvim binary: SUDO_EDITOR='/home/user/.local/share/bob/nvim-bin/nvim

These workarounds were devised by @nfejzic, thanks to him.

:heart: Credits And Inspiration