vi vs vim (2025)


vi
: old, tiny, always there.

vim: extended, modern, opinionated.


Which one is “better”? It depends on what you mean by “better.” Read on.

A brief origin story (because roots matter)

Vi was born inside UNIX in the 1970s as a visual mode for the ex editor. It was designed for the terminals of the day — think small keysets, no fancy mouse, and latencies you learned to ignore. Vim (Vi IMproved) arrived decades later as an affectionate, ambitious expansion: more commands, more features, more configurability — built by a community that wanted vi’s modal power without vi’s strict minimalism. These origins explain a lot about how each editor behaves today. 

What’s different in plain English

  • Availability: Vi (or a POSIX vi-compatible binary) is shipped with virtually every Unix-like system. If you SSH into a minimal container, vi is the safe bet.

  • Feature set: Vim adds syntax highlighting, persistent undo, scripting, plugins, and a thousand little modern conveniences. It’s a superset in practice.

  • Ecosystem: Vim’s plugin ecosystem and evolving script language widened the editor’s appeal; Neovim and VSCode-with-Vim-modes have further complicated the landscape. 

Vim in 2025 — what changed and why it still matters


Vim keeps evolving. The big recent step was the introduction of Vim9 and its revamped scripting model — faster, cleaner, and closer to languages most developers already know. That matters because it reduces friction for plugin authors and improves runtime performance for script-heavy configs. At the same time, the community pushed ergonomic tweaks and clarified long-standing rough edges. If you liked Vim in the 2010s, 2025’s versions feel sharper; if you hated writing Vimscript, Vim9’s syntax is a breath of fresh air. 

Where Neovim sits in the story (brief detour)


Neovim is not “vi” or “classic vim” — it’s a fork that focused on modernization: built-in async, a modern plugin host model, and an emphasis on Lua-based configuration. Many users migrated to Neovim because it solved practical problems (performance, plugin isolation, smoother LSP integrations). The result? In 2025 you’ll find three common workflows: tiny-vi for system recovery, Vim (or gVim) for a classic-but-powerful experience, and Neovim for a modular, performance-focused setup. 

Practical differences — the things you’ll actually notice

  • Startup & footprint: Plain vi is tiny and starts instantly. Vim and Neovim take longer if configured with many plugins.

  • Extensibility: Vim + plugins → huge power. Neovim’s Lua-first ecosystem often feels more modern and faster.

  • Scripting: Vim9 scripting improves Vim’s internal scripting performance; Neovim’s Lua APIs are more flexible.

  • Compatibility: Learning Vim gives you more features; learning vi gives you portability. That’s the trade-off.

Which should you learn in 2025? a practical checklist

Ask yourself:

  1. Do you want the editor that’s always there on any minimal system? → learn vi motions and essentials.

  2. Do you want a productive, extensible coder’s environment at your fingertips? → learn Vim (or Neovim) and invest in a small, curated plugin set.

  3. Do you prefer a modern, scriptable config in Lua? → lean Neovim.

  4. Are you a sysadmin who needs to recover broken systems over SSH? → vi first, then Vim when you get home.

Short version: learn the motions and modal model first (these are identical across vi/vim/neovim), then invest time in modern Vim/Neovim tooling depending on your needs.

Learning path (fast, realistic, and not boring)

  • Week 1 — the essentials: h, j, k, l; i, a, o; :w, :q, :wq; dd, yy, p. Practice until these are reflex.

  • Week 2 — text objects & motions: w, b, e, 0, $, %; ciw, c$; visual mode. These give speed.

  • Week 3 — plugins & config hygiene: pick a plugin manager, add fuzzy finder and LSP client, but keep it minimal. Learn to debug slow startups.

  • Ongoing: refine shortcuts, learn a few macros, and write a tiny plugin or a utility function in Vim9/ Lua to understand the internals.

Common myths

  • “Vi is obsolete.” Not true. Vi is the guaranteed fallback.

  • “Vim is only for purists.” Also false; modern Vim/Neovim workflows plug perfectly into modern toolchains, LSPs and Git-based workflows.

  • “You must pick one forever.” Nah. Most engineers switch contexts: vi for emergency edits, Neovim for daily coding.

Example scenarios

  • Quick config tweak on remote server: use vi. No setup, no fuss.

  • Large codebase refactor with LSP & fuzzy search: use Neovim (or Vim with appropriate plugins).

  • Teaching a beginner keyboard-driven editing: start with Vim’s tut (vimtutor) — it balances power and discoverability.

The real winner

There isn’t one. The “winner” is the editor that reduces friction for your workflow. Learn the modal mindset (that’s the actual superpower), then pick the tool that gives you the environment you need: portability and guaranteed availability (vi) or extensibility and features (Vim/Neovim). Both are ancient and continually renewed — and that paradox is their strength.

Comments