
This is a page from an upcoming zine called "The Secret Rules of the Terminal".
To get an email when the zine comes out, sign up for the zine announcements list!

read the transcript!
editing text you typed in seems so basic:
>>> print("helo")
oops, forgot an l!
but there’s actually no standard system
programs need to implement even the most basic things
Illustration of a little smiling stick figure with curly hair.
person: “left arrow”
program, represented by a box with a smiley face: “ok I will move the cursor to the left”
often programs will use the readline library for this
option 1: NOTHING
person (angry): “even the ARROW KEYS don’t work???”
program (blissfully content): arrow keys? what’s that?
- Only
Ctrl-W
Ctrl-U
and backspace work - Examples:
cat
,nc
,git
- You’re probably in this situation if you press the left arrow key and it prints
^[[D
- You can often add readline shortcuts with
rlwrap
, like this:
$ rlwrap nc
option 2: READLINE
person (neutral): “it’s a little awkward but at least I can use those weird keyboard shortcuts from emacs!”
- LOTS of keyboard shortcuts:
Ctrl-A
Ctrl-E
, arrow keys, many more - You can use
Ctrl-R
to look at history - Examples:
bash
,irb
,psql
- If you press
Ctrl-R
and you see “reverse-i-search” , you’re probably using readline - Configurable with the
~/.inputrc
config file
option 3: CUSTOM
person (smiling): “wow, I can type a multiline command without it being a total disaster?? amazing!”
- The keyboard shortcuts are probably influenced by readline
- Examples:
fish
,zsh
,ipython
- usually you only see custom implementations in bigger projects
Saturday Morning Comics!
Want another comic like this in your email every Saturday? Sign up here!