No description
Find a file
2020-09-11 11:59:34 -03:00
.github Improve test coverage (#390) 2020-08-28 09:58:35 -03:00
alfred Widget: fix behavior for % (#368) 2020-07-10 10:10:38 -03:00
docs Fix typos 2020-09-02 15:29:42 -03:00
scripts Improve code quality a little bit (#352) 2020-04-25 15:30:05 -03:00
shell Add fallback widget for bash < 4 (#375) 2020-08-13 09:14:33 -03:00
src Revamp preview window for argument selection (#398) 2020-09-11 11:59:34 -03:00
tests Revamp preview window for argument selection (#398) 2020-09-11 11:59:34 -03:00
.gitignore Rust implementation (#197) 2020-03-04 18:01:23 -03:00
Cargo.lock Revamp preview window for argument selection (#398) 2020-09-11 11:59:34 -03:00
Cargo.toml Revamp preview window for argument selection (#398) 2020-09-11 11:59:34 -03:00
LICENSE Change license to Apache 2.0 (#141) 2019-10-28 16:58:19 -03:00
Makefile Allow custom dirs when running make (#214) 2020-03-09 18:41:06 -03:00
README.md Fix bad link 2020-09-02 15:28:54 -03:00
rustfmt.toml rustfmt: max-width 150 (#388) 2020-08-28 09:21:24 -03:00

navi icon Actions Status GitHub release

An interactive cheatsheet tool for the command-line and application launchers.

Terminal demo

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.

Pros

  • it will spare you from knowing CLIs by heart
  • it will spare you from copy-pasting output from intermediate commands
  • it will make you type less
  • it will teach you new one-liners

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).

Table of contents

Installation

navi can be installed with the following package managers:

Packaging status

The recommended way to install navi is by running:

brew install navi

If brew isn't available, you can check alternative install instructions.

Usage

There are 3 ways to use navi:

  • by typing navi in the terminal and hitting <Enter>
    • pros: you have access to all possible subcommands and flags
  • by invoking it via a shell widget in the terminal
    • pros: the shell history is correctly populated (i.e. the actual command you ran instead of navi) and you can edit the command as you wish before executing it
  • as an Alfred workflow

Cheatsheet repositories

Running navi for the first time will help you download and manage cheatsheets.

You can also:

Cheatsheet syntax

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.

Customization

You can:

Using it for shell scripting

Let's say you want to write a bash script that, among other things, asks the user to write the name of a git branch that should be checked out.

If you already have the cheatsheet above, then you could write the following in your script:

navi --query "change branch" --best-match

navi will ask the user to fill all arguments needed.

If you want to set the <branch> beforehand in your script, you could then write:

branch="master" navi --query "change branch" --best-match

More info

Please run the following command to read more about all possible options:

navi --help

In addition, please check the /docs folder.

Trying out online

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.

Similar tools

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:

  • it's natural to write cheatsheets tailored to your needs
  • arguments are neither hardcoded nor a simple template

Etymology

In The Legend of Zelda Ocarina of Time, navi is a character that provides Link with a variety of clues to help him solve puzzles and progress in his quest.