#cli #notes #productivity #minimalist #syntax-highlighting

app mn

The CLI app for remembering those little things that slip your mind

11 releases

0.2.1 Jan 25, 2019
0.2.0 Jan 25, 2019
0.1.8 Jan 24, 2019

#1468 in Command line utilities

45 downloads per month

MIT and LGPL-3.0-or-later

844 lines


Mnemonic is a CLI app for remembering those little things that slip your mind.

I frequently forget things—nothing big, just little Unix commands that I don't use often enough to commit to memory, small details that might slip my mind, things like that.

I used to keep a notes text files saved in my home directory then run cat ~/notes to jog my memory. But then I decided there had to be a better—and prettier—way. But crucially, a way that preserves the simplicity of typing cat ~/notes.

And thus, Mnemonic was born. Invoke it with the mn command to quickly print a syntax-highlighted mnemonics to your terminal. Here it is in action:

Mnemonic in use


Currently, you have two installation options, both of which require Rust:

  • Install with cargo install mn (installs only the executable itself)
  • Clone the repository, cd into it, and run make install (installs the executable and Zsh completions (man page and completions for additional shells coming soon))

In the future, additional installation instructions will be supported (including through conventional package managers).


Run mn --help for full usage details. The basic commands are mn <MNEMONIC>, which shows a previously created mnemonic; mn list, which lists all existing mnemonics, mn add <MNEMONIC>, which creates a new mnemonic using your $EDITOR, and mn edit <MNEMONIC>, which edits an exiting mnemonic.

Each of these sub-commands takes various options as well. For example, you can also use mn add <MNEMONIC> --push "<TEXT>" to push text to a mnemonic without opening it in your editor or mn show <MNEMONIC> --syntax "yaml" to display a mnemonic with YAML syntax highlighting.

Consult the help command for full details.

Syntax highlighting

Mnemonic highlights all output as Markdown. If you wish a portion of text to be highlighted as a different language, you can use GitHub-style code-fences. For example,

fn main() {
    println!("Hello, world!");


would display syntax highlighting similar to

fn main() {
    println!("Hello, world!");

The syntax highlighting theme is user-configurable with the same themes used in Bat, which was a major inspiration for this project.


~448K SLoC