The GNU Readline library provides a set of functions that allow users to
edit typed command lines. Both Emacs and vi editing modes are available. It
includes additional functions for maintaining a list of previously-entered
command lines for recalling or editing those lines, and for performing csh-like
history expansion on previous commands.