navi allows you to browse through cheatsheets (that you may write yourself or download from maintainers) and execute commands. Suggested values for arguments are dynamically displayed in a list.
It uses fzf, skim, or Alfred under the hood and it can be either used as a command or as a shell widget (à la Ctrl-R).
brew install navi
Be sure to enable the GURU overlay.
emerge -a app-misc/navi
nix-env -iA nixpkgs.navi
cargo install --locked navi
For Windows users, using PowerShell
Install the package via choco
Create $env:USERPROFILE\AppData\Roaming\navi\config.yaml
and override shell.command
as per config_file_example.yaml
style:
tag:
color: cyan
comment:
color: grey
snippet:
color: white
shell:
command: powershell
Remark: Above example also adds custom colors for better readability in case you use standard blue for your Powershell
bash <(curl -sL https://raw.githubusercontent.com/denisidoro/navi/master/scripts/install)
# (optional) to set directories:
# BIN_DIR=/usr/local/bin bash <(curl -sL https://raw.githubusercontent.com/denisidoro/navi/master/scripts/install)
$PATH
git clone https://github.com/denisidoro/navi ~/.navi
cd ~/.navi
make install
# (optional) to set the install directory:
# make BIN_DIR=/usr/local/bin install
navi supports environment variables at compile time that modify the behavior of the binary at runtime:
NAVI_PATH
(directory path value): If the cheats
directory in the user's directory does not exist, navi uses this path (if it exists), as a fallback location to look for cheat files. Use case: system-wide installed, shared used cheatsheets folder.NAVI_CONFIG
(file path value): If the config.yaml
file in the user's directory does not exist, navi uses this path (if it exists), as a fallback location to look for a configuration file. Use case: system-wide installed, shared used configuration file.You can find navi for more package managers by clicking on the image below:
Feel free to be the maintainer of navi for any package manager you'd like!
If you want to install it, add this line to your .bashrc
-like file:
# bash
eval "$(navi widget bash)"
# zsh
eval "$(navi widget zsh)"
# fish
navi widget fish | source
# elvish
eval (navi widget elvish | slurp)
By default, Ctrl+G
is assigned to launching navi.
There's currently no way to customize the widget behavior out-of-the-box. If you want to change the keybinding or the navi flags used by the widget, please:
navi widget bash
in your terminal.bashrc
-like fileThere are multiple ways to use navi:
navi
in the terminalnavi
) and you can edit the command as you wish before executing itIn particular, check these instructions if you want to replicate what's shown in the demo above.
Running navi for the first time will help you download and manage cheatsheets.
You can also:
Cheatsheets are described in .cheat
files that look like this:
% git, code
# Change branch
git checkout <branch>
$ branch: git branch | awk '{print $NF}'
The full syntax and examples can be found here.
You can:
Please run the following command to read more about all possible options:
navi --help
In addition, please check the /docs folder.
If you don't have access to a Unix shell at the moment and you want to live preview navi, head to this playground. It'll start a docker container with instructions for you to install and use the tool. Note: login required.
There are many similar projects out there (beavr, bro, cheat, cheat.sh, cmdmenu, eg, how2, howdoi and tldr, to name a few).
They are excellent projects, but navi remains unique in the following ways:
Navi is a character from The Legend of Zelda Ocarina of Time that provides Link with a variety of clues to help him solve puzzles and make progress in his quest.
Support the project and author: https://github.com/denisidoro/navi#motivation