• ↑↓ to navigate
  • ↵ to open
  • ⟶ to select
  • ⌘ ⌥ ↵ to open in a panel
  • ←→ to navigate
  • esc to dismiss
⌘ '
keyboard shortcuts

The Problem

Single-character/single-line operations are inefficient when editing structured text (quotes, brackets, paragraphs). Manually counting or searching to select delimited blocks is error-prone.

Core Idea

Text objects allow selecting delimited content (words, sentences, paragraphs, quoted strings, brackets) with two-character commands: <action>i<object> (inside) or <action>a<object> (around).

How It Works

Pattern: <action>a<object> and <action>i<object>

  • action: any operator (d delete, y yank, v select)
  • i: inside (content only)
  • a: around (including delimiters)

Common objects:

ObjectMeaning
wword
WWORD (whitespace-separated)
ssentence
pparagraph
"double quotes
'single quotes
) or bparentheses
]brackets
}braces
ttags (like <html>)

Key Properties

  • ci" changes inside quotes without deleting the quotes
  • da" includes the quotes in the deletion
  • v2i) selects the inner two parentheses groups
  • Count prefixes work: d2i( deletes two nested groups

Edge Cases & Gotchas

  • Visual mode doesn’t need an action — just vi" works
  • Nested quotes: counts work (ci"" — inner pair in "foo"bar")
  • Objects are motion-compatible — y works same as d (yanks)

Visual Explanation

aliases___text_objects__textobjects__zone_selection__ci___ca___etc_ A Aliases: [Text Objec Input B Aliases: [Text Objec Core Mechanism A->B triggers C Aliases: [Text Objec Output B->C produces

Semantic Network

semantic_aliases___text_objects__textobjects__zone_selection__ci___ca___etc_ THIS Aliases: [Text Objec REL1 Related Concept THIS--REL1 related REL2 Builds Into THIS--REL2 builds into

Connections