.circleci | ||
.github | ||
cheats | ||
scripts | ||
src | ||
test | ||
LICENSE | ||
Makefile | ||
navi | ||
README.md |
navi
An interactive cheatsheet tool for the command-line so that you'll never say the following again:
— How to run that command again?
— Oh, it's not in my bash history
— Geez, it's almost what I wanted but I need to change some args
navi allows you to browse through cheatsheets (that you may write yourself or download from maintainers) and execute commands, prompting for argument values.
Installation
Using brew:
brew install denisidoro/tools/navi
Without brew:
git clone http://github.com/denisidoro/navi /opt/navi
cd /opt/navi
sudo make install
# install fzf: https://github.com/junegunn/fzf
Usage
Simply call:
navi
Trying it out online
Head to this playground for previewing navi.
Motivation
The main objectives are:
- to increase discoverability, by finding commands given keywords or descriptions;
- to prevent you from running auxiliar commands, copying the result into the clipboard and then pasting into the original command;
- to easily share one-liners with others so that they don't need to figure out how to write the commands;
- to improve terminal usage as a whole.
Sure, you can find autocompleters out there for all your favorite commands. However, they are very specific and each one may offer a different learning curve.
Or you can launch a browser and search for instructions on Google, but that takes some time.
navi, on the other hand, intends to be a general purpose platform for bookmarking any command at a very low cost.
Using your own cheatsheets
In this case, you need to pass the directory which contains .cheat
files as in:
navi --dir "/folder/with/cheats"
Alternatively, you can set an environment variable in your .bashrc
-like file:
export NAVI_DIR="/folder/with/cheats"
Submitting cheatsheets
Feel free to fork this project and open a PR for me to include your contributions.
.cheat syntax
- lines starting with
%
should contain tags which will be added to any command in a given file; - lines starting with
#
should be descriptions of commands; - lines starting with
$
should contain commands that generate suggestion values for a given argument; - all the other non-empty lines are considered as executable commands.
For example, this is a valid .cheat
file:
% git, code
# Change branch
git checkout <branch>
$ branch: git branch | awk '{print $NF}'
For advanced usage, please refer to the files in /cheats.
Alternatives
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.