Hacker News new | past | comments | ask | show | jobs | submit login

While I'd definitely advocate getting extremely comfortable with your preferred text editor, this does not seem like a good approach at all. These drills ask you to do a specific command by description ("Move one character right"), which creates an association between that description and the editor action. However, when you're working quickly in an editor, you're thinking at a much higher level than "move one character right"; you're thinking about how to perform some higher-level action involving code navigation or editing.

It would make more sense to present an editor and ask the user to make a specific high-level change (such as refactoring a function), let the user do so, and then analyze their input to figure out whether they could have done so more efficiently. For instance, in vim, did they navigate by hitting hjkl or use a more efficient /search, and did they hit delete/x repeatedly or use something like c2w?




Immediately after trying it briefly I had the same thought. I wonder though if you could ever really describe what the "best" way to do something is in Vim. I believe we could be pretty clear that "xxxxx" is less efficient than "5x" or "daw", but in different contexts different ones would be appropriate.

If the goal is just muscle memory for beginners, I think instead you might want to have specific actions at a high level with the goal of using particular families of commands. For example, swap the highlighted two words in the following paragraph using only full-word commands. Then it could have a very clear and expected input for you to use as a goal and you could practice doing it.


You can't uniquely identify one method as "best". In particular, there's a limit to how much you want to learn and use specialized commands versus a core set of broadly applicable commands. However, you can identify a set of broadly applicable commands that proficient users should know, and make sure they're at least using those, if not something even more specialized.

For instance, suppose you're sitting in the middle of a line, and you want to add a word five words to the right on the next line down. j5wi or /sometext[enter]i are both sensible ways to navigate. )wi might make sense if the insertion point is just after the end of a sentence. jwwwwwi is not horrific (given that visual counting may not be as fast) but probably deserves a warning as a reminder. jllllllllllllllllllllllllli is well worth warning about.


What about showing the cursor in the middle of some placeholder text, and highlighting the desired final cursor position with a red dot? This would offer a very specific goal to the user without the need for more complex, high level actions.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: