# 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]]