{"schemaVersion":1,"contentVersion":"3.4.0","id":"intro.1","languages":{"javascript":{"id":"intro.1","title":"Modes, movement and a first edit","moduleName":"Your first good edit","tips":"","concept":"<p class=\"lead\">In Normal mode, keys move or change text. Press <kbd>i</kbd> to enter Insert mode and type; <kbd>Esc</kbd> returns to Normal.</p><p><kbd>h</kbd> moves left, <kbd>j</kbd> down, <kbd>k</kbd> up and <kbd>l</kbd> right. The cursor and mode label show where you are.</p><p>Match the desired result, then return to Normal mode. <kbd>u</kbd> undoes the last edit, <kbd>Ctrl-r</kbd> redoes it, and Reset restores the starting text.</p>","teaches":["hjkl","insert","char-delete","textobject"],"introduces":[],"constraints":[],"drills":[{"task":"In Normal mode, move right to the b in blue. The code should stay unchanged.","hint":"The desired result is visible. Escape returns to Normal mode; u undoes an edit. You can reset and try again.","mode":"text/plain","start":"red blue","startCursor":{"line":0,"ch":0},"paths":[{"keys":["l","l","l","l"],"tier":"idiomatic","technique":"motion:l","core":["motion:l"],"note":"Aim at the stated boundary, make the edit, then return to Normal mode."}],"target":"red blue","kind":"navigate","land":{"line":0,"ch":4},"canonicalKey":"intro.1#0","canonicalFingerprint":"1141ccb"},{"task":"Press i, type A little followed by a space, then Escape.","hint":"The desired result is visible. Escape returns to Normal mode; u undoes an edit. You can reset and try again.","mode":"text/plain","start":"practice begins.","startCursor":{"line":0,"ch":0},"paths":[{"keys":["i","A little ","<Esc>"],"tier":"idiomatic","technique":"insert","core":["insert"],"note":"Aim at the stated boundary, make the edit, then return to Normal mode."}],"target":"A little practice begins.","canonicalKey":"intro.1#1","canonicalFingerprint":"tiffd4"},{"task":"Remove the extra m at the end. $ moves to the end; x deletes the character under the cursor. Try u to recover whenever you need it.","hint":"The desired result is visible. Escape returns to Normal mode; u undoes an edit. You can reset and try again.","mode":"text/plain","start":"Keep calmm","startCursor":{"line":0,"ch":0},"paths":[{"keys":["$","x"],"tier":"idiomatic","technique":"char-delete","core":["char-delete"],"note":"Aim at the stated boundary, make the edit, then return to Normal mode."}],"target":"Keep calm","canonicalKey":"intro.1#2","canonicalFingerprint":"1iscq3s"},{"task":"Replace rush with calm. ciw changes the word under the cursor; type calm, then Escape.","hint":"The desired result is visible. Escape returns to Normal mode; u undoes an edit. You can reset and try again.","mode":"text/plain","start":"Choose rush today.","startCursor":{"line":0,"ch":8},"paths":[{"keys":["c","i","w","calm","<Esc>"],"tier":"idiomatic","technique":"text object iw","core":["textobject:iw"],"note":"Aim at the stated boundary, make the edit, then return to Normal mode."}],"target":"Choose calm today.","canonicalKey":"intro.1#3","canonicalFingerprint":"qxcal6"}]},"python":{"id":"intro.1","title":"Modes, movement and a first edit","moduleName":"Your first good edit","tips":"","concept":"<p class=\"lead\">In Normal mode, keys move or change text. Press <kbd>i</kbd> to enter Insert mode and type; <kbd>Esc</kbd> returns to Normal.</p><p><kbd>h</kbd> moves left, <kbd>j</kbd> down, <kbd>k</kbd> up and <kbd>l</kbd> right. The cursor and mode label show where you are.</p><p>Match the desired result, then return to Normal mode. <kbd>u</kbd> undoes the last edit, <kbd>Ctrl-r</kbd> redoes it, and Reset restores the starting text.</p>","teaches":["hjkl","insert","char-delete","textobject"],"introduces":[],"constraints":[],"drills":[{"task":"In Normal mode, move right to the b in blue. The code should stay unchanged.","hint":"The desired result is visible. Escape returns to Normal mode; u undoes an edit. You can reset and try again.","mode":"text/plain","start":"red blue","startCursor":{"line":0,"ch":0},"paths":[{"keys":["l","l","l","l"],"tier":"idiomatic","technique":"motion:l","core":["motion:l"],"note":"Aim at the stated boundary, make the edit, then return to Normal mode."}],"target":"red blue","kind":"navigate","land":{"line":0,"ch":4},"canonicalKey":"intro.1#0","canonicalFingerprint":"1141ccb"},{"task":"Press i, type A little followed by a space, then Escape.","hint":"The desired result is visible. Escape returns to Normal mode; u undoes an edit. You can reset and try again.","mode":"text/plain","start":"practice begins.","startCursor":{"line":0,"ch":0},"paths":[{"keys":["i","A little ","<Esc>"],"tier":"idiomatic","technique":"insert","core":["insert"],"note":"Aim at the stated boundary, make the edit, then return to Normal mode."}],"target":"A little practice begins.","canonicalKey":"intro.1#1","canonicalFingerprint":"tiffd4"},{"task":"Remove the extra m at the end. $ moves to the end; x deletes the character under the cursor. Try u to recover whenever you need it.","hint":"The desired result is visible. Escape returns to Normal mode; u undoes an edit. You can reset and try again.","mode":"text/plain","start":"Keep calmm","startCursor":{"line":0,"ch":0},"paths":[{"keys":["$","x"],"tier":"idiomatic","technique":"char-delete","core":["char-delete"],"note":"Aim at the stated boundary, make the edit, then return to Normal mode."}],"target":"Keep calm","canonicalKey":"intro.1#2","canonicalFingerprint":"1iscq3s"},{"task":"Replace rush with calm. ciw changes the word under the cursor; type calm, then Escape.","hint":"The desired result is visible. Escape returns to Normal mode; u undoes an edit. You can reset and try again.","mode":"text/plain","start":"Choose rush today.","startCursor":{"line":0,"ch":8},"paths":[{"keys":["c","i","w","calm","<Esc>"],"tier":"idiomatic","technique":"text object iw","core":["textobject:iw"],"note":"Aim at the stated boundary, make the edit, then return to Normal mode."}],"target":"Choose calm today.","canonicalKey":"intro.1#3","canonicalFingerprint":"qxcal6"}]},"text":{"id":"intro.1","title":"Modes, movement and a first edit","moduleName":"Your first good edit","tips":"","concept":"<p class=\"lead\">In Normal mode, keys move or change text. Press <kbd>i</kbd> to enter Insert mode and type; <kbd>Esc</kbd> returns to Normal.</p><p><kbd>h</kbd> moves left, <kbd>j</kbd> down, <kbd>k</kbd> up and <kbd>l</kbd> right. The cursor and mode label show where you are.</p><p>Match the desired result, then return to Normal mode. <kbd>u</kbd> undoes the last edit, <kbd>Ctrl-r</kbd> redoes it, and Reset restores the starting text.</p>","teaches":["hjkl","insert","char-delete","textobject"],"introduces":[],"constraints":[],"drills":[{"task":"In Normal mode, move right to the b in blue. The code should stay unchanged.","hint":"The desired result is visible. Escape returns to Normal mode; u undoes an edit. You can reset and try again.","mode":"text/plain","start":"red blue","startCursor":{"line":0,"ch":0},"paths":[{"keys":["l","l","l","l"],"tier":"idiomatic","technique":"motion:l","core":["motion:l"],"note":"Aim at the stated boundary, make the edit, then return to Normal mode."}],"target":"red blue","kind":"navigate","land":{"line":0,"ch":4},"canonicalKey":"intro.1#0","canonicalFingerprint":"1141ccb"},{"task":"Press i, type A little followed by a space, then Escape.","hint":"The desired result is visible. Escape returns to Normal mode; u undoes an edit. You can reset and try again.","mode":"text/plain","start":"practice begins.","startCursor":{"line":0,"ch":0},"paths":[{"keys":["i","A little ","<Esc>"],"tier":"idiomatic","technique":"insert","core":["insert"],"note":"Aim at the stated boundary, make the edit, then return to Normal mode."}],"target":"A little practice begins.","canonicalKey":"intro.1#1","canonicalFingerprint":"tiffd4"},{"task":"Remove the extra m at the end. $ moves to the end; x deletes the character under the cursor. Try u to recover whenever you need it.","hint":"The desired result is visible. Escape returns to Normal mode; u undoes an edit. You can reset and try again.","mode":"text/plain","start":"Keep calmm","startCursor":{"line":0,"ch":0},"paths":[{"keys":["$","x"],"tier":"idiomatic","technique":"char-delete","core":["char-delete"],"note":"Aim at the stated boundary, make the edit, then return to Normal mode."}],"target":"Keep calm","canonicalKey":"intro.1#2","canonicalFingerprint":"1iscq3s"},{"task":"Replace rush with calm. ciw changes the word under the cursor; type calm, then Escape.","hint":"The desired result is visible. Escape returns to Normal mode; u undoes an edit. You can reset and try again.","mode":"text/plain","start":"Choose rush today.","startCursor":{"line":0,"ch":8},"paths":[{"keys":["c","i","w","calm","<Esc>"],"tier":"idiomatic","technique":"text object iw","core":["textobject:iw"],"note":"Aim at the stated boundary, make the edit, then return to Normal mode."}],"target":"Choose calm today.","canonicalKey":"intro.1#3","canonicalFingerprint":"qxcal6"}]}}}