# Vimny — Wizard Wisdom Corpus
# GENERATED by art/_gen_wizard_wisdom.py — do not edit by hand.
#
# Each poem is tagged with introduces_slug: the LEVELS slug of the level
# it precedes. The blessing fires that poem when the player completes the
# level just before it. introduces_slug=null poems are the generic pool
# (title-screen flavour + fallback). See the generator for voice notes.
{
  "levels": [
    {
      "introduces_slug": null,
      "name": "home row",
      "line_count": 4,
      "quote": [
        "         h left, l right, j down, k up—         ",
        "        a road built one step at a time.        ",
        "    The arrow keys lie far from the hearth;     ",
        "             keep your hands warm.              "
      ]
    },
    {
      "introduces_slug": null,
      "name": "save and quit",
      "line_count": 4,
      "quote": [
        "    : opens the spellbook beneath the glass.    ",
        "  :w saves your tale in parchment permanence.   ",
        "    :q winds the scroll, :wq keeps it safe.     ",
        "    :q! lights it aflame—no record remains.     "
      ]
    },
    {
      "introduces_slug": null,
      "name": "rhythm",
      "line_count": 2,
      "quote": [
        "        Budget is breath. Par is pulse.         ",
        "   Let the keystrokes flicker, not be rushed.   "
      ]
    },
    {
      "introduces_slug": null,
      "name": "philosophy",
      "line_count": 4,
      "quote": [
        "         Vim is a posture, not a tool.          ",
        "    The hands stay; the mind roams the map.     ",
        "    To forget and to recall are both roads.     ",
        "       Clarity is warmth in the fingers.        "
      ]
    },
    {
      "introduces_slug": null,
      "name": "encouragement",
      "line_count": 3,
      "quote": [
        "          Every mage began with hjkl.           ",
        "   You're not slow—you're tuning the signal.    ",
        "     The buffer awaits in warm, soft light.     "
      ]
    },
    {
      "introduces_slug": null,
      "name": "closing",
      "line_count": 4,
      "quote": [
        "    Avaunt, traveler! Keep your glow steady.    ",
        "     The world is text. You are the light.      ",
        "        Lost? Esc. Return to stillness.         ",
        "               Rest at home row.                "
      ]
    },
    {
      "introduces_slug": null,
      "name": "final blessing",
      "line_count": 4,
      "quote": [
        "    I wore the Warden's face at every gate.     ",
        " None remain. The buffer is yours, end to end.  ",
        "Some treasure yet waits in these halls’ chests. ",
        "Wear my hat with :set hat. Look before you leap!"
      ]
    },
    {
      "introduces_slug": "line_halls",
      "name": "line motions",
      "line_count": 4,
      "quote": [
        "           0 to the bare left margin,           ",
        "       ^ to the first letter that speaks,       ",
        "           $ to the line's far wall.            ",
        "        Far-left, first word, far-right.        "
      ]
    },
    {
      "introduces_slug": "reliquary",
      "name": "delete char",
      "line_count": 4,
      "quote": [
        "       x. No aim, no stride—just the mark       ",
        "       beneath you, struck from the row.        ",
        "        The unnamed register \" keeps it.        ",
        "          Nothing wanders far in here.          "
      ]
    },
    {
      "introduces_slug": "counting_crypts",
      "name": "counts",
      "line_count": 3,
      "quote": [
        "     Once I tapped j eleven times to fall.      ",
        "        Now I say the number, then step.        ",
        "     11j: eleven floors in a single breath.     "
      ]
    },
    {
      "introduces_slug": "rune_halls",
      "name": "w b e",
      "line_count": 4,
      "quote": [
        "    w steps to the next word's first stone.     ",
        "       b walks that same path home again.       ",
        "       e reaches across to the far edge—        ",
        "    three strides, and the river's crossed.     "
      ]
    },
    {
      "introduces_slug": "character_cataracts",
      "name": "f F t T",
      "line_count": 4,
      "quote": [
        "    fx lands square on the letter you name.     ",
        "      tx halts a breath before it stands.       ",
        "      F and T walk the same hunt backward.      ",
        "   Name your mark; the rest is in your hands.   "
      ]
    },
    {
      "introduces_slug": "goblin_gauntlet",
      "name": "; ,",
      "line_count": 4,
      "quote": [
        "           Name your letter the once.           ",
        "      ; walks that find on down the line.       ",
        "      , turns on its heel and comes back.       ",
        "        The hunt remembers; you needn't.        "
      ]
    },
    {
      "introduces_slug": "wardens_keep",
      "name": "warden keep",
      "line_count": 4,
      "quote": [
        "        A Warden waits beyond this door.        ",
        "     Bring no new trick—only what you know.     ",
        "     Steady hands have crossed worse halls.     ",
        "     Breathe, and let the keystrokes fall.      "
      ]
    },
    {
      "introduces_slug": "word_forge",
      "name": "W B E",
      "line_count": 4,
      "quote": [
        "       w minds each comma, dot, and dash;       ",
        "     W strides past them in a single bound.     ",
        "       B walks it backward, E to the end—       ",
        "       the bolder path across the ground.       "
      ]
    },
    {
      "introduces_slug": "backward_vaults",
      "name": "ge gE",
      "line_count": 4,
      "quote": [
        "     e walks forward to a word's far edge.      ",
        "      ge turns and finds the edge behind.       ",
        "   The g says: the same reach, the other way.   ",
        "   gE the wide one—whitespace to whitespace.    "
      ]
    },
    {
      "introduces_slug": "lineheads",
      "name": "G gg",
      "line_count": 4,
      "quote": [
        "      gg: two soft steps to the top stone.      ",
        "     G: one long fall to the cellar floor.      ",
        "     Set a number first, and G lands there.     ",
        "     Top, bottom, and every rung you name.      "
      ]
    },
    {
      "introduces_slug": "screen_vault",
      "name": "H M L",
      "line_count": 4,
      "quote": [
        "   H, the high stone where the screen begins.   ",
        "         M, the middle, never counted.          ",
        "        L, the low stone where it ends.         ",
        "        Your eye already knows the row.         "
      ]
    },
    {
      "introduces_slug": "bracket_vaults",
      "name": "%",
      "line_count": 4,
      "quote": [
        "     ( ) [ ] { } — every pair has two ends.     ",
        "     % leaps from one bracket to its match.     ",
        "     Stand on the open, land on the close;      ",
        "      one hop spans the whole nested arc.       "
      ]
    },
    {
      "introduces_slug": "runic_archives",
      "name": "} {",
      "line_count": 4,
      "quote": [
        "      } leaps the blank to the next block.      ",
        "             { walks it back again.             ",
        "      Paragraphs are doors of empty space.      ",
        "     Step through; the silence carries you.     "
      ]
    },
    {
      "introduces_slug": "sentence_corridor",
      "name": ") (",
      "line_count": 4,
      "quote": [
        "      A full stop is a stone in the brook.      ",
        "       ) hops to the next, ( to the last.       ",
        "      Sentence by sentence you cross dry.       ",
        "          Each ending holds your foot.          "
      ]
    },
    {
      "introduces_slug": "warden_surveyor",
      "name": "warden sight",
      "line_count": 4,
      "quote": [
        "         The Warden's eye opens ahead.          ",
        "    He sees the whole hall before he moves.     ",
        "      No new key—only your gathered craft.      ",
        "       Look first; then make your stride.       "
      ]
    },
    {
      "introduces_slug": "sight_sanctum",
      "name": "v",
      "line_count": 3,
      "quote": [
        "      v opens the eye and it follows you.       ",
        "       Move, and the trail glows behind—        ",
        "      all it crosses, held until you act.       "
      ]
    },
    {
      "introduces_slug": "selection_halls",
      "name": "V <C-v>",
      "line_count": 3,
      "quote": [
        "    V takes lines whole, however you stand;     ",
        "     Ctrl-v cuts a window through the page.     ",
        "   Shape the sight to the wound, then strike.   "
      ]
    },
    {
      "introduces_slug": "seekers_labyrinth",
      "name": "/ ? n N *",
      "line_count": 4,
      "quote": [
        "      / casts a name down the hall ahead;       ",
        "    ? sends the same call back. n, N follow.    ",
        "       * takes the word beneath your feet       ",
        "     and hunts its echo through the stone.      "
      ]
    },
    {
      "introduces_slug": "binders_reliquary",
      "name": ":h za :q",
      "line_count": 4,
      "quote": [
        "      No one remembers every key. I bound       ",
        "       a book so you would never have to:       ",
        "   :h opens it beside you, za unfolds a page,   ",
        "     :q closes the book — never the world.      "
      ]
    },
    {
      "introduces_slug": "waypoint_sanctum",
      "name": "m ' `",
      "line_count": 4,
      "quote": [
        "         ma sets a stone you can name.          ",
        "            `a returns to it, exact.            ",
        "    'a drops you at that line's first rune.     ",
        "   Mark the spot; wander; come straight back.   "
      ]
    },
    {
      "introduces_slug": "archivists_library",
      "name": ":e :set",
      "line_count": 4,
      "quote": [
        "       :e opens another chamber's scroll.       ",
        "   :set number lights each line with a count.   ",
        "        Many rooms, one steady lantern—         ",
        "  step between them without losing your place.  "
      ]
    },
    {
      "introduces_slug": "warden_pathfinder",
      "name": "warden pathfinder",
      "line_count": 4,
      "quote": [
        " The Pathfinder maps every hall you've walked.  ",
        "     He asks no new trick, only your route.     ",
        "   Find the seam; mark the turn; move clean.    ",
        "    The way out is the way you came to know.    "
      ]
    },
    {
      "introduces_slug": "operators_vault",
      "name": "d c",
      "line_count": 4,
      "quote": [
        "      d takes whatever the motion crosses.      ",
        "      c takes it too, then opens to write.      ",
        "     The verb decides; the motion measures.     ",
        "       dw, c$ — say both, and it is done.       "
      ]
    },
    {
      "introduces_slug": "cipher_cell",
      "name": "r D",
      "line_count": 4,
      "quote": [
        "       r swaps one letter and stays put—        ",
        "      strike the true rune over the false.      ",
        "     D shears the rot from cursor to wall.      ",
        "   Read what the cell forgot; write it back.    "
      ]
    },
    {
      "introduces_slug": "whole_line_annex",
      "name": "c cc s",
      "line_count": 4,
      "quote": [
        "      d cuts the word, then drops the pen.      ",
        "    c takes the word and hands you the pen.     ",
        "    cc rewrites the line; s, a single rune.     ",
        "     change cuts and writes in one breath.      "
      ]
    },
    {
      "introduces_slug": "change_extension",
      "name": "S C",
      "line_count": 4,
      "quote": [
        "    cc you know—two strokes to mend a line.     ",
        "     S does the same and asks for only one.     ",
        "    c$ recut the tail; C is its single key.     ",
        "   The practised hand spends less, says more.   "
      ]
    },
    {
      "introduces_slug": "quartermaster",
      "name": "y yy P",
      "line_count": 4,
      "quote": [
        "      y lifts the letters; nothing is cut.      ",
        "     yy takes the whole line in one reach.      ",
        "      What's lifted waits in the register—      ",
        "    P lays it back, just before the cursor.     "
      ]
    },
    {
      "introduces_slug": null,
      "name": "undo and redo",
      "line_count": 4,
      "quote": [
        "         u steps the last change back.          ",
        "         <C-r> steps it forward again.          ",
        "   Not retreat—the rope that lets you climb.    ",
        "       Try the bold move; you can return.       "
      ]
    },
    {
      "introduces_slug": "echo_vault",
      "name": ".",
      "line_count": 4,
      "quote": [
        "        . is memory; it forgets nothing.        ",
        " Whatever you changed last—it holds the shape.  ",
        "     Move to the next place and press once.     ",
        "           The same hand falls again.           "
      ]
    },
    {
      "introduces_slug": "warden_manifold",
      "name": "warden manifold",
      "line_count": 4,
      "quote": [
        "      The Manifold wears a hundred faces.       ",
        "    Each is a task you have already learned.    ",
        "        No new key waits past this gate—        ",
        "   only the patience to repeat yourself well.   "
      ]
    },
    {
      "introduces_slug": "inscription_halls",
      "name": "i a",
      "line_count": 4,
      "quote": [
        "     i opens just before the cursor stands.     ",
        "        a opens just after—one step in.         ",
        "      Two doors into the same quiet room.       ",
        "     Esc closes them when the word is set.      "
      ]
    },
    {
      "introduces_slug": "sculpting_chambers",
      "name": "I A o O",
      "line_count": 4,
      "quote": [
        "  I leaps to the line's first stone to write;   ",
        "       A to the last—the line's far end.        ",
        "      o opens a fresh line below; O above.      ",
        "      Four ways in, each to its own edge.       "
      ]
    },
    {
      "introduces_slug": "overwrite_halls",
      "name": "R",
      "line_count": 4,
      "quote": [
        "      r struck one stone; R does not stop.      ",
        "   It walks the wall, overwriting as it goes.   ",
        "  A whole run of flaws under one steady hand—   ",
        "         Esc, and the new line stands.          "
      ]
    },
    {
      "introduces_slug": "case_chambers",
      "name": "~ g~ gU gu",
      "line_count": 4,
      "quote": [
        "     ~ turns the lamp on the letter below:      ",
        "    small to tall, tall to small, one step.     ",
        "   gU raises a span; gu lowers it; g~ flips.    ",
        "        Case bends; the cursor walks on.        "
      ]
    },
    {
      "introduces_slug": "joiners_gate",
      "name": "J gJ",
      "line_count": 4,
      "quote": [
        "     J pulls the next line up to this one,      ",
        "      setting a single space at the seam.       ",
        "      gJ joins them with no space at all.       ",
        "       Two rows become one clean stride.        "
      ]
    },
    {
      "introduces_slug": "alignment_halls",
      "name": ">> <<",
      "line_count": 4,
      "quote": [
        "       >> pushes the line one step right.       ",
        "      << pulls it back toward the margin.       ",
        "      Indent is breath given to structure.      ",
        "       Nudge the row until it sits true.        "
      ]
    },
    {
      "introduces_slug": "indentation_sanctum",
      "name": ">{m} <{m} =",
      "line_count": 4,
      "quote": [
        "     > and < take a motion, like any verb:      ",
        "      >} shifts a paragraph in one reach.       ",
        "      = lets the buffer set its own depth.      ",
        "       Name the span; the indent follows.       "
      ]
    },
    {
      "introduces_slug": "warden_scrivener",
      "name": "warden scrivener",
      "line_count": 4,
      "quote": [
        "      The Scrivener has copied every hall.      ",
        "    He tests the editing hand, not new keys.    ",
        "     Cut clean, write true, fix what slips.     ",
        "     A steady scribe needs no fresh spell.      "
      ]
    },
    {
      "introduces_slug": "word_enclosure",
      "name": "iw aw",
      "line_count": 4,
      "quote": [
        "         Stand anywhere inside a word—          ",
        "       ciw still changes the whole of it.       ",
        "   iw takes the word; aw takes its space too.   ",
        "       Name the shape; the rest is done.        "
      ]
    },
    {
      "introduces_slug": "bracket_enclosure",
      "name": "i( a(",
      "line_count": 4,
      "quote": [
        "    Deep inside the parens, ci( clears them.    ",
        "  i( holds what's within; a( takes the walls.   ",
        "      No need to find the edges yourself—       ",
        "        name the pair, and Vim spans it.        "
      ]
    },
    {
      "introduces_slug": "brace_square_enclosure",
      "name": "i[ a[ i{ a{",
      "line_count": 4,
      "quote": [
        "        Square or brace, the rule holds:        ",
        "        i[ within, a[ with the brackets.        ",
        "        i{ the body, a{ the braces too.         ",
        "    Every pair answers to inside and around.    "
      ]
    },
    {
      "introduces_slug": "quote_enclosure",
      "name": "i\" a\" i' a'",
      "line_count": 4,
      "quote": [
        "      ci\" clears what the quotes contain.       ",
        "      i\" the words; a\" the marks as well.       ",
        "       ' or \", the same hand works both.        ",
        "       Stand between; name in or around.        "
      ]
    },
    {
      "introduces_slug": "tag_enclosure",
      "name": "it at",
      "line_count": 4,
      "quote": [
        "        it holds what a tag pair wraps.         ",
        "     at takes the tags themselves as well.      ",
        "        cit rewrites the content clean,         ",
        "         the angle-marks left standing.         "
      ]
    },
    {
      "introduces_slug": "sentence_enclosure",
      "name": "is as",
      "line_count": 4,
      "quote": [
        "    is grasps the sentence you stand within.    ",
        "       as gathers its trailing space too.       ",
        "           No hunting for the stops—            ",
        "      name the sentence, and it is yours.       "
      ]
    },
    {
      "introduces_slug": "paragraph_enclosure",
      "name": "ip ap",
      "line_count": 4,
      "quote": [
        "      ip takes the block you stand inside.      ",
        "     ap gathers the blank line after, too.      ",
        "     A whole paragraph in one named reach.      ",
        "        The largest stone, lifted clean.        "
      ]
    },
    {
      "introduces_slug": "grandmasters_sanctum",
      "name": "grandmaster",
      "line_count": 4,
      "quote": [
        "    The Grandmaster keeps the deepest hall.     ",
        "    Every text object, every verb, in turn.     ",
        "    Bring the whole of what you've learned—     ",
        "       name the shape, and let it answer.       "
      ]
    },
    {
      "introduces_slug": "spellwrights_forge",
      "name": ":s///",
      "line_count": 4,
      "quote": [
        "         :s shifts one shape on a line.         ",
        "     :%s reshapes the whole world at once.      ",
        " :g/pat/d strikes every line bearing the mark.  ",
        "       Name what is, then what shall be.        "
      ]
    },
    {
      "introduces_slug": "culling_ledger",
      "name": ":{range}d",
      "line_count": 4,
      "quote": [
        "   A range names lines you will never touch.    ",
        "     :2d culls one; :5,9d culls the block.      ",
        "     :v//d keeps only what bears the word.      ",
        "d _ culls to the void; your hand keeps its key. "
      ]
    },
    {
      "introduces_slug": "shelving_room",
      "name": ":m :t :> :<",
      "line_count": 4,
      "quote": [
        " :m carries a line to a shelf it never walked.  ",
        "        :t leaves the original standing.        ",
        "        :> and :< set how deep it sits.         ",
        "        Order is an edit like any other.        "
      ]
    },
    {
      "introduces_slug": "refrain_vault",
      "name": "& :&& :j :y",
      "line_count": 4,
      "quote": [
        "    One spell, spoken once: & says it again.    ",
        "     :&& keeps the flags a plain & forgets.     ",
        "     :1j mends a line torn across the gap;      ",
        "      :y carries it home to your register.      "
      ]
    },
    {
      "introduces_slug": "hall_of_echoes",
      "name": "q @ \"",
      "line_count": 4,
      "quote": [
        "     qa captures your rhythm; q stills it.      ",
        "      @a plays it back like a looped tape.      ",
        "       \"ay fills a jar; \"ap pours it out.       ",
        "   One motion, stored to echo down the halls.   "
      ]
    },
    {
      "introduces_slug": "stair_rail",
      "name": "+ - _",
      "line_count": 4,
      "quote": [
        "   j falls where it falls; + finds the step.    ",
        "      - climbs the same way, word to word.      ",
        "    And _ counts the whole descent at once.     ",
        "   Take the rail; the stairs were cut for it.   "
      ]
    },
    {
      "introduces_slug": "g_sanctum",
      "name": "g_ g* gi gp",
      "line_count": 4,
      "quote": [
        "    g_ finds the last glyph, never the fall.    ",
        "      g* hunts a word hidden inside words.      ",
        "      gi returns your pen to the wet ink.       ",
        "  gp stamps, and stands ready to stamp again.   "
      ]
    },
    {
      "introduces_slug": "buried_word",
      "name": "g* n",
      "line_count": 4,
      "quote": [
        "      A word may hide inside another word.      ",
        "    * asks for it whole, and hears nothing;     ",
        "   g* asks for the letters, and they answer.    ",
        "       Then n, and n — the chain unwinds.       "
      ]
    },
    {
      "introduces_slug": "wet_ink",
      "name": "gi",
      "line_count": 4,
      "quote": [
        "  Called away mid-word? Let it dry unfinished.  ",
        "    When you return, do not hunt the margin—    ",
        "     gi sets your pen where the ink is wet,     ",
        "    already writing, mid-thought, mid-line.     "
      ]
    },
    {
      "introduces_slug": "gauntlet",
      "name": "everything",
      "line_count": 4,
      "quote": [
        "   Every hall you walked, I folded into one.    ",
        " Two chambers have no doors: search is the key. ",
        "    Two verses are unwritten: open the line.    ",
        " Walk it once, clean, and the last seal parts.  "
      ]
    },
    {
      "introduces_slug": "register_unnamed_hold",
      "name": "the unnamed hold",
      "line_count": 4,
      "quote": [
        "     y lifts a word to the one plain hold;      ",
        "   p lays it back where the saying wants it.    ",
        "   But the hold keeps only your latest take—    ",
        "    and cutting takes. Paste before you cut.    "
      ]
    },
    {
      "introduces_slug": "register_named_vault",
      "name": "the named vault",
      "line_count": 4,
      "quote": [
        "One hand holds one thing; the vault holds many. ",
        "     \"ay lays a word in the door marked a,      ",
        "   \"by in the door marked b — and both keep,    ",
        "   so you walk the long room once, not twice.   "
      ]
    },
    {
      "introduces_slug": "warden_eternal",
      "name": "warden eternal",
      "line_count": 4,
      "quote": [
        "        The last Warden is every Warden.        ",
        "         No key remains for me to give—         ",
        "      the buffer is yours now, end to end.      ",
        "              Go gently, traveler.              "
      ]
    }
  ]
}
