Files
Hugo/content/blog/vim-motions.md
T

56 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
title: "Vim Motions That Actually Save Time"
date: 2026-05-14T14:00:00+08:00
draft: false
poet: |
Practice does not make perfect.
Only perfect practice makes perfect.
——Vince Lombardi,美国,1913–1970
description: "Which Vim motions are worth the muscle memory investment? A practical three-tier ranking from non-negotiable (ci, %, dot) to nice-to-have (macros, jump list), based on three years of daily use."
tags:
- Vim
- Productivity
- Editor
---
Everyone tells you to learn Vim, but nobody tells you *which* motions are worth the muscle memory investment. After three years of daily use, here's my honest ranking.
## Tier 1: Non-Negotiable
These pay for themselves within a week:
| Motion | What it does | Why it matters |
|--------|-------------|----------------|
| `ci"` | Change inside quotes | Editing strings, attributes |
| `ci(` / `ci{` | Change inside brackets | Refactoring arguments |
| `%` | Jump to matching bracket | Navigating code blocks |
| `*` / `#` | Search word under cursor | Quick variable tracing |
| `.` | Repeat last change | The single biggest time-saver |
## Tier 2: Worth Practicing
These take a few weeks to internalize but compound:
- `f{char}` / `F{char}` — find character inline. Faster than `h`/`l` spam
- `t{char}` / `T{char}` — find *until* character. Perfect for deleting `until` a comma
- `ctrl+d` / `ctrl+u` — half-page scroll. Keeps your eyes on the same spot
- `zz` — center current line. Eliminates mental reorientation
## Tier 3: Nice to Have
Useful but not essential for daily work:
- `gt` / `gT` — switch tabs
- `ctrl+o` / `ctrl+i` — jump back/forward in the jumplist
- Macros (`q{register}`) — only worth it for repetitive tasks of 10+ iterations
## What I Don't Use
- **Line numbers as targets** (`:42`) — too slow mentally
- **Visual block mode** — I use multi-cursor in VS Code instead
- **`/` search with regex** — I just use `*` and `f` 90% of the time
---
The real productivity gain isn't in any single motion — it's in **not thinking about navigation**. When your fingers just move the cursor without conscious effort, that's when the payoff arrives.