Vim is a free, open-source modal text editor originally created by Bram Moolenaar, and it's used by about 24.3% of developers. It runs entirely in the terminal and is built around keyboard-only "modes" for navigating and editing text โ a steep learning curve that, once climbed, lets experienced users edit code faster than almost any mouse-driven tool.
๐ Quick facts
Type: Terminal-based modal text editor
Made by: Bram Moolenaar (open-source community project)
License: Free, open-source
Platforms: Linux, macOS, Windows (via WSL or native builds) โ pre-installed on nearly every Unix-like system
Primary use case: Editing code and config files directly on remote servers, and fast keyboard-driven local editing
Key features
- Modal editing โ separate modes for navigation, insertion, and command entry, so most keys become commands rather than just typed characters
- Keyboard-only workflow โ no mouse needed; commands compose like a small language (e.g.
dw deletes a word)
- Ubiquitous on servers โ available by default on nearly every Linux/Unix box, so it's usable anywhere you can SSH in
- Extremely fast once learned โ skilled users can navigate and edit large files without ever leaving the home row
- Highly extensible โ plugin managers add file trees, fuzzy finders, and language servers, turning it into a lightweight IDE
- Steep learning curve โ the biggest barrier to adoption; unlearning "click to edit" habits takes real practice
Getting started
Vim is likely already installed on Linux and Mac. To install or update it:
# Ubuntu/Debian
sudo apt install vim
# macOS (Homebrew)
brew install vim
# Windows (winget)
winget install vim.vim
Launch it with vim filename.txt. Press i to enter insert mode and start typing, Esc to return to normal mode, and :wq then Enter to save and quit.
๐ฏ Best for: Editing files over SSH on a remote server, quick config-file tweaks, and any workflow where a developer wants to keep their hands on the keyboard at all times. Less suited to beginners looking for a visual, discoverable interface.