{"schemaVersion":1,"contentVersion":"3.4.0","id":"foundation.1","languages":{"javascript":{"id":"foundation.1","title":"First edits and modes","moduleName":"Editing foundations","tips":"","concept":"<p class=\"lead\">Enter and leave Insert mode; move to a character and correct it.</p><p><strong>Before this lesson:</strong> Start here: Your first Vim edit.</p><p>Normal mode gives keys commands; Insert mode gives them text. i inserts before the cursor; Esc completes the insertion. h/j/k/l move left/down/up/right. x removes the character under the cursor. r followed by a character replaces just that character and stays in Normal mode.</p><div class=\"pkeys\"><kbd>i</kbd> <kbd>Esc</kbd> <kbd>h</kbd> <kbd>j</kbd> <kbd>k</kbd> <kbd>l</kbd> <kbd>x</kbd> <kbd>r</kbd></div><h3>Example</h3><p>From the p in “plan”, i then “A ” then Esc makes “A plan”. From the a in “plam”, move right with l and type rn to repair the final letter. Watch the mode label before typing.</p><h4>Worked text</h4><pre class=\"lesson-example\">const message = \"plan\";</pre><h4>After the edit</h4><pre class=\"lesson-example\">const message = \"A plan\";</pre><p>Use Reset to try again.</p>","teaches":["insert","char-delete"],"introduces":["i","Esc","h","j","k","l","x","r"],"constraints":[],"drills":[{"task":"Add “Please ” before the message. Finish in Normal mode.","hint":"Compare the desired result with the starting text. Preserve the surrounding text.","mode":"jsx","start":"const message = \"Read short reports\";","startCursor":{"line":0,"ch":17},"paths":[{"keys":["i","Please ","<Esc>"],"tier":"idiomatic","technique":"insert","core":["insert"],"note":"Choose the intended boundary, make the change and finish in Normal mode."}],"target":"const message = \"Please Read short reports\";","language":"javascript","evidence":"guided","canonicalKey":"foundation.1#0","canonicalFingerprint":"1n0vk6j"},{"task":"Remove the extra final m from calmm. Preserve the surrounding text.","hint":"Compare the desired result with the starting text. Preserve the surrounding text.","mode":"jsx","start":"const message = \"Keep calmm\";","startCursor":{"line":0,"ch":25},"paths":[{"keys":["l","x"],"tier":"idiomatic","technique":"char-delete","core":["char-delete"],"note":"Choose the intended boundary, make the change and finish in Normal mode."}],"target":"const message = \"Keep calm\";","language":"javascript","evidence":"guided","canonicalKey":"foundation.1#1","canonicalFingerprint":"em2p9k"},{"task":"Correct nots to note with a single-character replacement.","hint":"Compare the desired result with the starting text. Preserve the surrounding text.","mode":"jsx","start":"const message = \"Send the nots\";","startCursor":{"line":0,"ch":29},"paths":[{"keys":["r","e"],"tier":"idiomatic","technique":"Single-character replacement","core":[],"note":"r replaces one character without entering Insert mode. The rest of the line stays intact."}],"target":"const message = \"Send the note\";","language":"javascript","evidence":"guided","canonicalKey":"foundation.1#2","canonicalFingerprint":"1rwh3xv"}]},"python":{"id":"foundation.1","title":"First edits and modes","moduleName":"Editing foundations","tips":"","concept":"<p class=\"lead\">Enter and leave Insert mode; move to a character and correct it.</p><p><strong>Before this lesson:</strong> Start here: Your first Vim edit.</p><p>Normal mode gives keys commands; Insert mode gives them text. i inserts before the cursor; Esc completes the insertion. h/j/k/l move left/down/up/right. x removes the character under the cursor. r followed by a character replaces just that character and stays in Normal mode.</p><div class=\"pkeys\"><kbd>i</kbd> <kbd>Esc</kbd> <kbd>h</kbd> <kbd>j</kbd> <kbd>k</kbd> <kbd>l</kbd> <kbd>x</kbd> <kbd>r</kbd></div><h3>Example</h3><p>From the p in “plan”, i then “A ” then Esc makes “A plan”. From the a in “plam”, move right with l and type rn to repair the final letter. Watch the mode label before typing.</p><h4>Worked text</h4><pre class=\"lesson-example\">message = \"plan\"</pre><h4>After the edit</h4><pre class=\"lesson-example\">message = \"A plan\"</pre><p>Use Reset to try again.</p>","teaches":["insert","char-delete"],"introduces":["i","Esc","h","j","k","l","x","r"],"constraints":[],"drills":[{"task":"Add “Please ” before the message. Finish in Normal mode.","hint":"Compare the desired result with the starting text. Preserve the surrounding text.","mode":"python","start":"message = \"Read short reports\"","startCursor":{"line":0,"ch":11},"paths":[{"keys":["i","Please ","<Esc>"],"tier":"idiomatic","technique":"insert","core":["insert"],"note":"Choose the intended boundary, make the change and finish in Normal mode."}],"target":"message = \"Please Read short reports\"","language":"python","evidence":"guided","canonicalKey":"foundation.1#0","canonicalFingerprint":"1n0vk6j"},{"task":"Remove the extra final m from calmm. Preserve the surrounding text.","hint":"Compare the desired result with the starting text. Preserve the surrounding text.","mode":"python","start":"message = \"Keep calmm\"","startCursor":{"line":0,"ch":19},"paths":[{"keys":["l","x"],"tier":"idiomatic","technique":"char-delete","core":["char-delete"],"note":"Choose the intended boundary, make the change and finish in Normal mode."}],"target":"message = \"Keep calm\"","language":"python","evidence":"guided","canonicalKey":"foundation.1#1","canonicalFingerprint":"em2p9k"},{"task":"Correct nots to note with a single-character replacement.","hint":"Compare the desired result with the starting text. Preserve the surrounding text.","mode":"python","start":"message = \"Send the nots\"","startCursor":{"line":0,"ch":23},"paths":[{"keys":["r","e"],"tier":"idiomatic","technique":"Single-character replacement","core":[],"note":"r replaces one character without entering Insert mode. The rest of the line stays intact."}],"target":"message = \"Send the note\"","language":"python","evidence":"guided","canonicalKey":"foundation.1#2","canonicalFingerprint":"1rwh3xv"}]},"text":{"id":"foundation.1","title":"First edits and modes","moduleName":"Editing foundations","tips":"","concept":"<p class=\"lead\">Enter and leave Insert mode; move to a character and correct it.</p><p><strong>Before this lesson:</strong> Start here: Your first Vim edit.</p><p>Normal mode gives keys commands; Insert mode gives them text. i inserts before the cursor; Esc completes the insertion. h/j/k/l move left/down/up/right. x removes the character under the cursor. r followed by a character replaces just that character and stays in Normal mode.</p><div class=\"pkeys\"><kbd>i</kbd> <kbd>Esc</kbd> <kbd>h</kbd> <kbd>j</kbd> <kbd>k</kbd> <kbd>l</kbd> <kbd>x</kbd> <kbd>r</kbd></div><h3>Example</h3><p>From the p in “plan”, i then “A ” then Esc makes “A plan”. From the a in “plam”, move right with l and type rn to repair the final letter. Watch the mode label before typing.</p><h4>Worked text</h4><pre class=\"lesson-example\">Message: plan</pre><h4>After the edit</h4><pre class=\"lesson-example\">Message: A plan</pre><p>Use Reset to try again.</p>","teaches":["insert","char-delete"],"introduces":["i","Esc","h","j","k","l","x","r"],"constraints":[],"drills":[{"task":"Add “Please ” before the message. Finish in Normal mode.","hint":"Compare the desired result with the starting text. Preserve the surrounding text.","mode":"text/plain","start":"Message: Read short reports","startCursor":{"line":0,"ch":9},"paths":[{"keys":["i","Please ","<Esc>"],"tier":"idiomatic","technique":"insert","core":["insert"],"note":"Choose the intended boundary, make the change and finish in Normal mode."}],"target":"Message: Please Read short reports","language":"text","evidence":"guided","canonicalKey":"foundation.1#0","canonicalFingerprint":"1n0vk6j"},{"task":"Remove the extra final m from calmm. Preserve the surrounding text.","hint":"Compare the desired result with the starting text. Preserve the surrounding text.","mode":"text/plain","start":"Message: Keep calmm","startCursor":{"line":0,"ch":17},"paths":[{"keys":["l","x"],"tier":"idiomatic","technique":"char-delete","core":["char-delete"],"note":"Choose the intended boundary, make the change and finish in Normal mode."}],"target":"Message: Keep calm","language":"text","evidence":"guided","canonicalKey":"foundation.1#1","canonicalFingerprint":"em2p9k"},{"task":"Correct nots to note with a single-character replacement.","hint":"Compare the desired result with the starting text. Preserve the surrounding text.","mode":"text/plain","start":"Message: Send the nots","startCursor":{"line":0,"ch":21},"paths":[{"keys":["r","e"],"tier":"idiomatic","technique":"Single-character replacement","core":[],"note":"r replaces one character without entering Insert mode. The rest of the line stays intact."}],"target":"Message: Send the note","language":"text","evidence":"guided","canonicalKey":"foundation.1#2","canonicalFingerprint":"1rwh3xv"}]}}}