# [`readline-vim`][]

Upgrade [Readline][] from [`vi`][] to [Vim][].

[`readline-vim`][] generates [Readline][] macros that provide [Vim][]
[motions][], [operators][] and [text objects][] (that are useful on a single
line).

[`readline-vim`]: https://git.rcrnstn.net/rcrnstn/readline-vim
[Readline]: https://en.wikipedia.org/wiki/Readline
[`vi`]: https://en.wikipedia.org/wiki/vi
[Vim]: https://en.wikipedia.org/wiki/Vim
[motions]: https://vimhelp.org/motion.txt.html
[operators]: https://vimhelp.org/motion.txt.html#operator
[text objects]: https://vimhelp.org/motion.txt.html#text-objects

## Background

[Readline][] is a library that provides line-editing for interactive
command-line programs. It is used in a great many places, including shells such
as [Bash][] (where it originated) and [REPL][]s such as [Python][] or
[Octave][]. Using [`rlwrap`][], Readline can even be used with programs that
doesn't have built in support for it, such as Matlab (as in `lrwrap -a matlab
-nodesktop -nosplash`). These factors make it fairly ubiquitous.

Readline can be configured with an `inputrc` file, usually placed at
`~/.inputrc`.

Readline uses [Emacs][]-like key bindings by default. If you're a Vim fan
though, you probably use its `vi` mode, activated by `set editing-mode vi` in
the configuration or through some mechanism in the containing program, such as
Bash's `set -o vi`.

If you *are* a Vim fan though, this has the potential of landing you in a sort
of [uncanny valley][] since (Readline's) `vi` (mode) does not include the many
improvements contained in Vim that you have come to rely on, mainly [text
objects][].

## License

Licensed under the [ISC License][], see the [`LICENSE`](LICENSE) file.

[ISC License]: https://choosealicense.com/licenses/isc/
