Francisco Javier Palacios Pérez Fco. Javier Palacios Pérez
Software Developer
Why Vim? The Modal Editing Philosophy

Why Vim? The Modal Editing Philosophy

Why Vim? The Modal Editing Philosophy

Why Vim? The Modal Editing Philosophy

If you’re reading this, you’re probably curious about Vim. Maybe you’ve seen a coworker editing code at lightning speed without touching the mouse. Maybe you’ve heard the meme about “how to exit Vim”. Or maybe you simply want to understand why so many people still use a text editor from the 90s in 2026.

Welcome. This is the beginning of a journey that will forever change the way you edit text.

What is Vim? And Neovim?

Vim is a modal, highly configurable, and extremely efficient text editor. It was created by Bram Moolenaar in 1991 as an improvement to vi (1976), the standard Unix editor.

Neovim is a modern fork of Vim (2014) that preserves all the original philosophy but adds:

  • Native support for LSP (Language Server Protocol) - autocompletion, diagnostics, refactoring
  • Modern architecture with asynchronous APIs
  • Configuration in Lua (in addition to Vimscript)
  • Better performance and code maintainability
  • Active community and modern plugins

In this course we’ll use Neovim because it’s the future of Vim. Everything you learn works in classic Vim, but Neovim gives you additional superpowers.

A bit of history: vi → Vim → Neovim

1976: vi (Bill Joy)
The original Unix editor. Designed for slow terminals connected via phone lines. Modal editing wasn’t a whim: it was technical necessity. You couldn’t send every keystroke to the server in real-time.

1991: Vim (Bram Moolenaar)
“Vi IMproved”. Added windows, syntax highlighting, plugins, and a thousand improvements while maintaining the modal essence.

2014: Neovim (Community)
Fork of Vim to modernize it. Asynchronous architecture, native LSP, Lua, better extensibility. Vim and Neovim coexist: many use Neovim but both are valid.

2026: LazyVim and modern distributions
Pre-packaged configurations that turn Neovim into a complete IDE in minutes. This is what we’ll use in this course.

The modal editing paradigm

This is the idea that will change your life as a programmer: instead of having a single mode where you type and navigate mixed together (like VS Code or Sublime), Vim radically separates these two concepts.

The four modes of Vim

Normal Mode
The default mode. You don’t type text, you navigate and execute commands. You’ll spend 80% of your time here. You can move word by word, delete lines, copy blocks, search, replace… without touching the mouse.

Insert Mode
This is where you DO type text, like in any normal editor. But the key is: you enter, make ONE edit, and exit. Vim trains you to make atomic, precise changes.

Visual Mode
To visually select text (like dragging with the mouse, but with the keyboard). You can select characters, complete lines, or rectangular blocks (yes, vertical blocks of code).

Command Mode
Execute Vim commands by typing :something. Here you save files (:w), exit (:q), search and replace (:s/old/new/g), open files, etc.

Why is this so powerful?

In traditional editors, to delete a word you:

  1. Double-click to select the word (mouse)
  2. Or Ctrl+Shift+→ (three keys at once)
  3. Backspace or Delete

In Vim:

  1. dw (two keys in normal mode)

Delete to the end of the line?

  • VS Code: Shift+EndBackspace (3 keys + move hand to mouse if you mess up)
  • Vim: D (one key)

Delete everything inside quotes?

  • VS Code: Double-click, adjust selection, Delete (several movements)
  • Vim: di" (three keys: delete inside quotes)

The magic isn’t in individual shortcuts. The magic is in the composable language.

The Vim language: composable grammar

Vim doesn’t have “keyboard shortcuts”. Vim has a language. And once you learn the grammar, you can combine concepts infinitely.

The basic structure is:

[count] operator motion

Operators:

  • d - delete
  • c - change (delete and enter insert mode)
  • y - yank (copy)
  • v - visual select

Motions:

  • w - word
  • $ - end of line
  • i" - inside quotes
  • ap - a paragraph
  • t. - till .

Combined examples:

  • dw - delete word
  • d$ - delete to end of line
  • di" - delete inside quotes
  • cap - change a paragraph
  • y3w - yank 3 words
  • dt. - delete till .

See the pattern? You don’t memorize shortcuts, you learn vocabulary. Once you know that:

  • i( means “inside parentheses”
  • a{ means “around braces”
  • c means “change”

Then ci( (change inside parentheses) is obvious. And da{ (delete around braces) too.

This scales. Regular keyboard shortcuts don’t.

Common myths about Vim

Before continuing, let’s debunk some misconceptions:

❌ “Vim is too hard”

Reality: Vim has a steep learning curve at the beginning (2-3 uncomfortable days), but then it becomes exponentially easier. Most editors have a flat curve: you’re always equally “slow”.

Vim is like learning to play guitar: the first chords are tough, but once you master them, you can play thousands of songs. Traditional shortcuts are like memorizing each song note by note.

❌ “Vim is only for terminals / ‘old-school’ people”

Reality: Neovim in 2026 with LazyVim has:

  • LSP (autocompletion, go-to-definition, refactoring)
  • Tree-sitter (advanced syntax highlighting)
  • Telescope (fuzzy finder like VS Code’s Cmd+P)
  • Neo-tree (visual file explorer)
  • Git integration (like GitLens)
  • Integrated debugger (DAP)
  • Support for any language (TypeScript, Rust, Python, Go…)

It’s a complete IDE, not a plain text editor.

❌ “I don’t need Vim, VS Code is enough”

Reality: This is the most common trap. VS Code is excellent, but:

  1. Speed: Editing with Vim is 2-3x faster once you master it. No exaggeration.
  2. Ergonomics: You don’t need a mouse. Your hands never leave the home row. Goodbye wrist pain.
  3. Portability: Vim is on any remote server. SSH to a server and you can edit with the same skills.
  4. Resources: Neovim uses 50MB of RAM. VS Code uses 500MB+ (and that’s just on startup).

Plus, there’s a VSCode Neovim extension if you want the best of both worlds.

❌ “Vim is for purists who hate modern technology”

Reality: GitHub, Google, Meta, Netflix have thousands of engineers using Vim/Neovim in 2026. ThePrimeagen (Netflix engineer) has millions of YouTube views teaching Neovim. This isn’t nostalgia, it’s pragmatism.

Why learn Vim in 2026?

Let me give you pragmatic reasons, not nostalgic ones:

1. Editing speed (productivity multiplier)

Once you master Vim, editing code is like thinking at the speed of your fingers. There’s no friction between “I want to change this” and “I’ve changed it”.

Real example: refactoring 20 function calls in a file.

  • VS Code: Search, Cmd+D for each match, edit (2 minutes, carefully)
  • Vim: :%s/oldFunc/newFunc/gc (10 seconds, with visual confirmation)

2. Ergonomics and health

As a programmer, you’ll spend 30,000+ hours of your life editing code. Do you want to spend them moving your hand to the mouse 500 times a day?

Vim keeps you on the home row (asdfghjkl). Less movement = less fatigue = less risk of repetitive strain injuries.

3. Works in ANY environment

SSH to a production server without a graphical interface. Does your VS Code work there? No.

Vim is everywhere: Linux servers, Docker containers, Raspberry Pi, your Mac, your Windows PC… Learn once, use everywhere.

4. Composability with the terminal

Vim isn’t just an editor. It’s part of the Unix philosophy:

# View only lines with "error" from a file
vim +'g/error/p' file.log

# Sort lines alphabetically from Vim
:%!sort

# Format JSON
:%!jq .

Vim integrates with grep, sed, awk, git, tmux… It’s part of an ecosystem.

5. Once you learn it, it’s for life

VS Code shortcuts change with each version. Plugins break. Configuration becomes obsolete.

Vim is 30 years old and the commands are still the same. What you learn now will work in 2030, 2040, 2050… Learn Vim once, use it forever.

Real-world use cases

Web development (React, Vue, Svelte)
LSP for TypeScript, autocompletion, linting with ESLint, formatting with Prettier, Git integration, Node.js debugger. All from Neovim.

Backend (Python, Go, Rust)
LSP for each language, testing with pytest/go test, DAP for debugging, integration with Docker/Kubernetes.

Data Science
Jupyter notebooks inside Neovim (Jupytext), Pandas, NumPy with autocompletion, graph visualization.

DevOps / SRE
Edit files on remote servers, Bash scripts, YAML/JSON configurations, IaC with Terraform.

Technical writing
Markdown with preview, spell checking, grammar, Pandoc integration to generate PDFs.

Vim vs modern editors (2026)

FeatureVim/NeovimVS CodeIntelliJ
Editing speed⚡⚡⚡⚡⚡⚡⚡⚡⚡⚡⚡
RAM consumption50MB500MB+1GB+
LSP / Autocompletion✅ Native✅ Native✅ Native
Customization⚡⚡⚡⚡⚡⚡⚡⚡⚡⚡⚡
Learning curveSteepGentleGentle
Remote environments (SSH)⚡⚡⚡⚡⚡⚡ (limited)
Ergonomics (no mouse)⚡⚡⚡⚡⚡⚡ (with extensions)
Plugin ecosystem⚡⚡⚡⚡⚡⚡⚡⚡⚡⚡⚡⚡⚡⚡
Free and open source❌ (Community yes)
Config stability⚡⚡⚡⚡⚡⚡⚡⚡⚡⚡⚡⚡

Verdict: Vim isn’t “better” at everything, but for pure text and code editing, it has no rival. For giant projects with many integrated tools, IntelliJ shines. VS Code is the accessible middle ground.

Many professionals use Neovim for quick editing + IntelliJ/VS Code for complex debugging. Or simply Neovim + extensions for everything.

Is Vim for you?

Vim is for you if:

  • ✅ You spend 4+ hours a day editing code
  • ✅ You want to be more efficient long-term (even if it hurts at first)
  • ✅ You like optimizing your tools
  • ✅ You work with remote servers or Docker
  • ✅ You want a tool that lasts decades

Vim is NOT for you if:

  • ❌ You only code occasionally (1-2 hours a week)
  • ❌ You don’t have patience for 1-2 weeks of initial discomfort
  • ❌ You only work on visual projects (UI/UX design, not code)
  • ❌ You need immediate results without time investment

Next steps

In the next lesson we’ll install Neovim + LazyVim on your system. LazyVim is a pre-made configuration that gives you a modern IDE in 5 minutes, without needing to configure anything manually.

Then we’ll learn to survive in Vim: how to open files, move around, edit, save, and exit (yes, the famous :q that became a meme).

In just 3-4 lessons you’ll already be editing real code. And in 2 weeks, you’ll be faster than with your current editor. I promise.

Key concepts from this lesson

  • Vim is a modal editor (1991), Neovim is its modern fork (2014)
  • Modal editing separates navigation (Normal) from typing (Insert) from selection (Visual)
  • Vim has a composable language: operators + motions = infinite combinations
  • They’re not shortcuts, it’s grammar: di" (delete inside quotes) is obvious if you know the syntax
  • Vim is NOT “old-school”: with LazyVim you have LSP, fuzzy finder, debugger, Git integration… a complete IDE
  • The learning curve is real, but the investment is worth it if you spend hours editing code
  • Vim is portable (works on servers), efficient (50MB RAM), ergonomic (no mouse needed)

Ready to install Neovim and enter the Matrix? See you in the next lesson.

Never stop coding!