No description
Find a file
Lam Chau ec04fa91b4 fix: preserve newlines in multi-line fish widget snippets
`commandline --current-process` treats newlines as process (pipe)
boundaries, which flattens multi-line snippets into a single line.

For example, a snippet like:

  ffmpeg \
    -i <input> \
    -preset slow \
    -codec:a aac

would be inserted as:

  ffmpeg \ -i <input> \ -preset slow \ -codec:a aac

Replace with `commandline --replace` which operates on the full
buffer and preserves newlines. Add `end-of-line` to position the
cursor at the end after replacement. Quote variables and add `--`
to prevent snippets starting with `-` from being interpreted as
flags.
2026-03-06 02:24:04 -08:00
.github
assets
docs Removed head -n 1 from tmux widget 2025-06-30 11:53:51 +10:00
scripts
shell fix: preserve newlines in multi-line fish widget snippets 2026-03-06 02:24:04 -08:00
src
tests
.gitignore
Cargo.lock
Cargo.toml
LICENSE
Makefile
README.md docs: fixes broken links 2025-08-18 16:18:33 +05:30
rust-toolchain.toml
rustfmt.toml

navi icon Actions Status GitHub release

An interactive cheatsheet tool for the command-line.

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 or skim under the hood and it can be either used as a command or as a shell widget (à la Ctrl-R).

Table of contents

Installation

The recommended way to install navi is by running:

brew install navi

Note

For more details on how to install Navi, see docs/installation

navi can be installed with the following package managers:

Packaging status

Usage

There are multiple ways to use navi:

  • by typing navi in the terminal
    • pros: you have access to all possible subcommands and flags
  • as a shell widget for the terminal
    • pros: the shell history is correctly populated (i.e. with the actual command you ran instead of navi) and you can edit the command as you wish before executing it
  • as a Tmux widget
    • pros: you can use your cheatsheets in any command-line app even in SSH sessions
  • as aliases
  • as a shell scripting tool

In particular, check these instructions if you want to replicate what's shown in the demo above.

Cheatsheet repositories

Running navi for the first time will help you download and manage cheatsheets. By default, they are stored at ~/.local/share/navi/cheats/.

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:

More info

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

navi --help

In addition, please check the /docs folder or the website.