{"schemaVersion":1,"contentVersion":"3.4.0","id":"intermediate.2","languages":{"javascript":{"id":"intermediate.2","title":"Repeat and reverse a character search","moduleName":"Boundaries and reusable text","tips":"","concept":"<p class=\"lead\">Choose a later occurrence or reverse direction without searching another line.</p><p><strong>Before this lesson:</strong> Character boundaries.</p><p>f and F land on a character; t and T stop beside it. ; repeats the original direction, and comma reverses it. A count such as 2f| chooses the second occurrence. These commands stay on the current line; search with / when you need another line.</p><h3>Example</h3><p>In north | centre | south, f| reaches the first bar; ; reaches the second; comma returns to the first. Inspect the character that an operator will preserve.</p><p>Use Reset to try again.</p>","teaches":["char-search-repeat","motion:f","motion:F","motion:T"],"introduces":["f","F","t","T",";",",","count"],"constraints":[],"drills":[{"task":"Reach the marked character boundary without changing the line. Finish at line 1, column 31.","hint":"Keep the text unchanged; inspect both the destination and any required outward visit.","mode":"jsx","start":"const route = \"north | centre | south\";","startCursor":{"line":0,"ch":15},"paths":[{"keys":["f","|",";"],"tier":"idiomatic","technique":"char-search-repeat","core":["char-search-repeat"],"note":"Choose the direction, occurrence and on/beside boundary deliberately."}],"kind":"navigate","land":{"line":0,"ch":30},"language":"javascript","evidence":"guided","canonicalKey":"intermediate.2#0","canonicalFingerprint":"13yrc1z"},{"task":"Reach the marked character boundary without changing the line. Finish at line 1, column 22.","hint":"Keep the text unchanged; inspect both the destination and any required outward visit.","mode":"jsx","start":"const route = \"north | centre | south\";","startCursor":{"line":0,"ch":15},"paths":[{"keys":["f","|"],"tier":"idiomatic","technique":"motion:f","core":["motion:f"],"note":"Choose the direction, occurrence and on/beside boundary deliberately."}],"kind":"navigate","land":{"line":0,"ch":21},"language":"javascript","evidence":"guided","canonicalKey":"intermediate.2#1","canonicalFingerprint":"13yrc2v"},{"task":"Reach the marked character boundary without changing the line. Finish at line 1, column 31.","hint":"Keep the text unchanged; inspect both the destination and any required outward visit.","mode":"jsx","start":"const route = \"north | centre | south\";","startCursor":{"line":0,"ch":36},"paths":[{"keys":["F","|"],"tier":"idiomatic","technique":"motion:F","core":["motion:F"],"note":"Choose the direction, occurrence and on/beside boundary deliberately."}],"kind":"navigate","land":{"line":0,"ch":30},"language":"javascript","evidence":"guided","canonicalKey":"intermediate.2#2","canonicalFingerprint":"13yrc1z"},{"task":"Reach the marked character boundary without changing the line. Finish at line 1, column 32.","hint":"Keep the text unchanged; inspect both the destination and any required outward visit.","mode":"jsx","start":"const route = \"north | centre | south\";","startCursor":{"line":0,"ch":36},"paths":[{"keys":["T","|"],"tier":"idiomatic","technique":"motion:T","core":["motion:T"],"note":"Choose the direction, occurrence and on/beside boundary deliberately."}],"kind":"navigate","land":{"line":0,"ch":31},"language":"javascript","evidence":"guided","canonicalKey":"intermediate.2#3","canonicalFingerprint":"13yrc1y"}]},"python":{"id":"intermediate.2","title":"Repeat and reverse a character search","moduleName":"Boundaries and reusable text","tips":"","concept":"<p class=\"lead\">Choose a later occurrence or reverse direction without searching another line.</p><p><strong>Before this lesson:</strong> Character boundaries.</p><p>f and F land on a character; t and T stop beside it. ; repeats the original direction, and comma reverses it. A count such as 2f| chooses the second occurrence. These commands stay on the current line; search with / when you need another line.</p><h3>Example</h3><p>In north | centre | south, f| reaches the first bar; ; reaches the second; comma returns to the first. Inspect the character that an operator will preserve.</p><p>Use Reset to try again.</p>","teaches":["char-search-repeat","motion:f","motion:F","motion:T"],"introduces":["f","F","t","T",";",",","count"],"constraints":[],"drills":[{"task":"Reach the marked character boundary without changing the line. Finish at line 1, column 25.","hint":"Keep the text unchanged; inspect both the destination and any required outward visit.","mode":"python","start":"route = \"north | centre | south\"","startCursor":{"line":0,"ch":9},"paths":[{"keys":["f","|",";"],"tier":"idiomatic","technique":"char-search-repeat","core":["char-search-repeat"],"note":"Choose the direction, occurrence and on/beside boundary deliberately."}],"kind":"navigate","land":{"line":0,"ch":24},"language":"python","evidence":"guided","canonicalKey":"intermediate.2#0","canonicalFingerprint":"13yrc1z"},{"task":"Reach the marked character boundary without changing the line. Finish at line 1, column 16.","hint":"Keep the text unchanged; inspect both the destination and any required outward visit.","mode":"python","start":"route = \"north | centre | south\"","startCursor":{"line":0,"ch":9},"paths":[{"keys":["f","|"],"tier":"idiomatic","technique":"motion:f","core":["motion:f"],"note":"Choose the direction, occurrence and on/beside boundary deliberately."}],"kind":"navigate","land":{"line":0,"ch":15},"language":"python","evidence":"guided","canonicalKey":"intermediate.2#1","canonicalFingerprint":"13yrc2v"},{"task":"Reach the marked character boundary without changing the line. Finish at line 1, column 25.","hint":"Keep the text unchanged; inspect both the destination and any required outward visit.","mode":"python","start":"route = \"north | centre | south\"","startCursor":{"line":0,"ch":30},"paths":[{"keys":["F","|"],"tier":"idiomatic","technique":"motion:F","core":["motion:F"],"note":"Choose the direction, occurrence and on/beside boundary deliberately."}],"kind":"navigate","land":{"line":0,"ch":24},"language":"python","evidence":"guided","canonicalKey":"intermediate.2#2","canonicalFingerprint":"13yrc1z"},{"task":"Reach the marked character boundary without changing the line. Finish at line 1, column 26.","hint":"Keep the text unchanged; inspect both the destination and any required outward visit.","mode":"python","start":"route = \"north | centre | south\"","startCursor":{"line":0,"ch":30},"paths":[{"keys":["T","|"],"tier":"idiomatic","technique":"motion:T","core":["motion:T"],"note":"Choose the direction, occurrence and on/beside boundary deliberately."}],"kind":"navigate","land":{"line":0,"ch":25},"language":"python","evidence":"guided","canonicalKey":"intermediate.2#3","canonicalFingerprint":"13yrc1y"}]},"text":{"id":"intermediate.2","title":"Repeat and reverse a character search","moduleName":"Boundaries and reusable text","tips":"","concept":"<p class=\"lead\">Choose a later occurrence or reverse direction without searching another line.</p><p><strong>Before this lesson:</strong> Character boundaries.</p><p>f and F land on a character; t and T stop beside it. ; repeats the original direction, and comma reverses it. A count such as 2f| chooses the second occurrence. These commands stay on the current line; search with / when you need another line.</p><h3>Example</h3><p>In north | centre | south, f| reaches the first bar; ; reaches the second; comma returns to the first. Inspect the character that an operator will preserve.</p><p>Use Reset to try again.</p>","teaches":["char-search-repeat","motion:f","motion:F","motion:T"],"introduces":["f","F","t","T",";",",","count"],"constraints":[],"drills":[{"task":"Reach the marked character boundary without changing the line. Finish at line 1, column 23.","hint":"Keep the text unchanged; inspect both the destination and any required outward visit.","mode":"text/plain","start":"Route: north | centre | south","startCursor":{"line":0,"ch":7},"paths":[{"keys":["f","|",";"],"tier":"idiomatic","technique":"char-search-repeat","core":["char-search-repeat"],"note":"Choose the direction, occurrence and on/beside boundary deliberately."}],"kind":"navigate","land":{"line":0,"ch":22},"language":"text","evidence":"guided","canonicalKey":"intermediate.2#0","canonicalFingerprint":"13yrc1z"},{"task":"Reach the marked character boundary without changing the line. Finish at line 1, column 14.","hint":"Keep the text unchanged; inspect both the destination and any required outward visit.","mode":"text/plain","start":"Route: north | centre | south","startCursor":{"line":0,"ch":7},"paths":[{"keys":["f","|"],"tier":"idiomatic","technique":"motion:f","core":["motion:f"],"note":"Choose the direction, occurrence and on/beside boundary deliberately."}],"kind":"navigate","land":{"line":0,"ch":13},"language":"text","evidence":"guided","canonicalKey":"intermediate.2#1","canonicalFingerprint":"13yrc2v"},{"task":"Reach the marked character boundary without changing the line. Finish at line 1, column 23.","hint":"Keep the text unchanged; inspect both the destination and any required outward visit.","mode":"text/plain","start":"Route: north | centre | south","startCursor":{"line":0,"ch":28},"paths":[{"keys":["F","|"],"tier":"idiomatic","technique":"motion:F","core":["motion:F"],"note":"Choose the direction, occurrence and on/beside boundary deliberately."}],"kind":"navigate","land":{"line":0,"ch":22},"language":"text","evidence":"guided","canonicalKey":"intermediate.2#2","canonicalFingerprint":"13yrc1z"},{"task":"Reach the marked character boundary without changing the line. Finish at line 1, column 24.","hint":"Keep the text unchanged; inspect both the destination and any required outward visit.","mode":"text/plain","start":"Route: north | centre | south","startCursor":{"line":0,"ch":28},"paths":[{"keys":["T","|"],"tier":"idiomatic","technique":"motion:T","core":["motion:T"],"note":"Choose the direction, occurrence and on/beside boundary deliberately."}],"kind":"navigate","land":{"line":0,"ch":23},"language":"text","evidence":"guided","canonicalKey":"intermediate.2#3","canonicalFingerprint":"13yrc1y"}]}}}