# Vi
Vi (Visual) is a screen-oriented text editor originally created by Bill Joy in 1976 for the BSD [[Unix]] operating system. It introduced the concept of modal editing — separating text insertion from command execution — which became the defining paradigm for an entire family of editors.
Vi is part of the [[POSIX]] standard, making it available on virtually every Unix-like system. While largely superseded by [[Vim]] and [[Neovim]] for daily use, understanding Vi is valuable because its keybindings are the foundation of the Vim ecosystem.
## Modal editing
- **Normal mode**: Navigate and manipulate text (default mode)
- **Insert mode**: Type text (`i`, `a`, `o` to enter; `Esc` to exit)
- **Command mode**: Execute commands (`:` from normal mode)
## Core keybindings
| Key | Action |
|-----|--------|
| `h/j/k/l` | Move left/down/up/right |
| `i` | Insert before cursor |
| `a` | Append after cursor |
| `o` | Open line below |
| `x` | Delete character |
| `dd` | Delete line |
| `yy` | Yank (copy) line |
| `p` | Paste |
| `:w` | Save |
| `:q` | Quit |
| `:wq` | Save and quit |
| `/pattern` | Search forward |
## Legacy and influence
Vi's modal editing model influenced:
- **[[Vim]]**: Vi IMproved — the most popular direct successor
- **[[Neovim]]**: Modern fork of Vim with better extensibility
- **Vi-mode in shells**: [[Bash]], [[Zsh (Z Shell)]], and fish all support vi keybindings
- **Editor plugins**: Vi/Vim emulation exists in [[Visual Studio Code (VSCode)]] and most modern editors
## References
- https://en.wikipedia.org/wiki/Vi_(text_editor)
- https://pubs.opengroup.org/onlinepubs/9699919799/utilities/vi.html
## Related
- [[Vim]]
- [[Neovim]]
- [[Nano]]
- [[Unix]]
- [[POSIX]]
- [[Command Line Interface (CLI)]]
- [[Shell]]