Skip to content

Instantly share code, notes, and snippets.

@JoshCheek
Last active January 28, 2016 17:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save JoshCheek/3978bbab2fbfd8e689fb to your computer and use it in GitHub Desktop.
Save JoshCheek/3978bbab2fbfd8e689fb to your computer and use it in GitHub Desktop.
Why vim?

Why vim?

Why might it make sense to have students use vim? (tried to highlight the bits that lead me to conclude a console editor, to make it easier to skim, not to be all in-your-face or w/e :P)

Premises

  • Many things will be easier if they all use the same editor (though it's fine if they explicitly want to use a different one)
    • They can pair easier
    • I can give them keybinding practice during class
    • They can use the aesthetic as a visual clue to their environment
  • This requires an editor that works across all the environments (including https://c9.io, for any Windows users) I'm pretty sure this means a console editor.
  • I additionally, explicitly want them to not use a mouse (or any persistent crutch, but the mouse is the most abused), because I've seen students 6 months in, still stumbling over the mouse. In the first week or two, it's probably an acceptable crutch, but very quickly, the cost of tool inefficiency exceeds the cost of learning the tool. So I want that habit to not be formed in the first place.
    • I could create a culture of tool proficiency, which I do intend to do.
    • I could give them an environment that doesn't support that particular crutch, which, again, implies a console editor.
  • Within console editors, there's 4 options that I know of:
    • vim
    • emacs
    • nano
    • pico
    • facetiously: ed
  • Of these, probably emacs is the most reasonable, since it allows keybindings to be consistent between the shell and editor. But if I choose emacs, then I take a productivity hit while I learn it, and I can't give them good tips for how to use it effectively.
  • No matter what I choose, they'll be at a disadvantage for a period of time, but if I choose vim, then I won't be, which means I can demonstrate competency in it that inspires them to improve their skill, and I can show them effective ways of using it.
  • Alternatively, if I choose emacs, then we can all learn together, thus a culture of improving at our tools, where they can participate in contributing. But it does mean that some amount of clarity will be lost while I fumble with the tools.
  • I think this really matters, because their proficiency with their tools affects their behaviour, and their behaviour is what determines their success. I can tell how good a student is with their tools by how they think. If they think without feedback, it's because the cost of feedback is high, so they're optimizing against it (maybe a lack of typing skill, or a lack of proficiency with their tools). This impedes everything they work on, which slows their progress significantly. There is an exponential cost to this ineffectiveness, so it becomes very valuable to practice these.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment