When I learned to touch type in high school, we used an application
similar to "Mavis Beacon Teaches Typing" that drilled character
sequences into my muscle memory. I think there was a real advantage
to this approach over simply stumbling through the process of learning
to type. The application chose intentionally difficult sequences and
required that I practice those ones over and over again. The result
was that I could touch type the unusual sequences at nearly the same
rate as regular sequences, and my overall achievement in touch typing
was quite remarkable. (I have since lost my edge, as I now only type
at about 85 WPM).
This approach to learning seems very similar to what modern psychology
has identified as the way in which people become experts: Deliberate
Practice [1]. The idea is that expertise is not accidental and comes
through a designed learning process [2]. Some of the important
elements include:
1. Identifying specific elements that need to be improved and then
working intently on them.
2. A great deal of repetition.
3. Feedback.
I am fairly new to Vim and am interested in taking a disciplined
approach to learning how to navigate and modify code using its
powerful stateful approach to text editing. In particular, I want to
eventually learn how to refactor code without thinking too much about
what keys I'm pressing.
Are there any "Mavis Beacon Teaches Vim" type programs or plugins out
there that would help me accomplish this?
Thank you,
Duane Johnson
[1] (PDF) http://projects.ict.usc.edu/itw/gel/EricssonDeliberatePracticePR93.pdf
[2] http://www.openeducation.net/2008/11/02/deliberate-practice-%E2%80%93-where-self-reflection-work-ethic-and-ambition-meet/
Well, my take on this question is that the one and only skill that needs
to be mastered letter-perfect by every person who wants to become really
efficient _by means of_ Vim is to learn how to use the help, including
helptag completion, the various ways to call it (Ctrl-D for "list all
matches" and I recommend also 'wildmenu'), and the :helpgrep command.
See:
:help
:help :help
:help {subject}
:help :helpgrep
(and, for :helpgrep, the following come handy:
:map <F2> :cnext<CR>
:map <S-F2> :cprev<CR>
:map <F3> :cnfile<CR>
:map <S-F3> :cpfile<CR>
:map <F4> :clast<CR>
:map <S-F4> :cfirst<CR>
-- look them up.)
:help index
:help doc-file-list
:help 'wildmode'
:help 'wildmenu'
:help 'wildoptions'
:help cmdline-completion
An accessory task, which I wouldn't call a skill, is to read every post
on one or more of the Vim lists: vim_use in all cases, vim_multibyte if
you're interested in Unicode and/or non-Latin scripts, vim_mac if you're
on a Mac computer, vim_dev if you're interested in compiling your own
Vim, and/or in tracking and/or fixing bugs in Vim, and/or in developing
new features. You don't need vim_announce if you get one (or more) of
the others. It's by reading these lists that I learnt most of what I
know about Vim; but using the help comes first.
Everything else you can learn when and if needed, and you can't know in
advance how often (if at all) you'll need it. What you need most often
you'll learn by doing anyway, no need to deliberate-practice it.
If you want to become an expert _about_ Vim, i.e. know all its ins and
outs perfectly on the tips of your fingers, then you came too late: for
that skill, you would have had to be borne Bram Moolenaar. ;-)
Best regards,
Tony.
--
Ask Not for whom the Bell Tolls, and You will Pay only the
Station-to-Station rate.
On Apr 8, 2:44 pm, Duane Johnson <duane.john...@gmail.com> wrote:
> When I learned to touch type in high school...
> ...practice those ones over and over again...
I think you're swimming against the strengths of vim. In vim if you
find yourself doing something over and over again you stop and find a
better way, at the least record a macro.
Regards, John
I think what I'm looking for is something like vimtutor, but just
slanted a little more toward developing muscle-memory. I want a solid
base of knowing that "w" goes to the next word, and that "h" means
left and "l" means right, for example. I know this sort of thing is
probably ridiculously easy for you, but that's where I'm at.
Thanks,
Duane
On Apr 7, 11:41 pm, Tony Mechelynck <antoine.mechely...@gmail.com>
wrote:
> > [2]http://www.openeducation.net/2008/11/02/deliberate-practice-%E2%80%93...
Yeah, thinking about it, it looks like we're once more against the
conservative <=> progressive theories of learning (Reminds me of a
recent comment I gave on one of Paul Krugman's NYT blog articles).
A conservative learns by rote the same skills and the same prayers which
his great-great-great-grandfather used before him -- I'm just
caricaturing a tiny wee bit ;-) : Learn How Not To Think And You Will Be
A Good Conservative: Curiosity Is Original Sin, And Whoever Is Not With
Us And Of Us, Is Against Us.
A progressist (the conservatives, or at least the Usonian ones, will
say: "a g**damn Commie socialist liberal", which is also a caricature
and worse: a clich�, and false to boot; in other countries conservatives
use other clich�s, different in form but similar in intent) learns how
to learn: he has an encyclopaedia and uses it, or maybe he has several,
for he doesn't trust one encyclopaedia to the exclusion of all other
sources of knowledge; he experiments and learns by trial and error; he
reasons about what he's doing; and when undertaking a new task, he
starts by reasoning about what he's going to do. And he's not afraid to
find out about new things, quite the contrary.
Vim is not a tool for the conservative: in Vim (unlike in, er, no, not
Emacs which I used just the five minutes sufficient to see that I would
never be able to learn it, but Notepad, which I can still use if I have
to, e.g. if I'm helping a friend on a computer without a sensible OS --
not an OS made by Torvalds et al., I mean, not even by S. Jobs but
-argh- by Gates's minions -- and where I can't install software)... in
Vim, I was saying, you can't learn everything in any short-enough length
of time. You learn the basic skills in a few hours or a few days (by
running the vimtutor and/or the gvimtutor), you learn how to learn (the
help), and the rest comes to you as needed, little by little, over the
course of a lifetime.
In Vim, for most tasks, there is no "one single way to do them right",
but many; and in the time I've been following this here mailing list,
I've been astonished more than once by the number of different ways to
"do the thing right" that people can come up with (together with, let us
be honest, a goodly number of ways to do it wrong too, but experiment
will always show what works and what doesn't).
In Vim, when starting to do something new, the question is: Now how
shall I dissect that task into elements which I know how to do? and if I
don't know them all, let's find out how to do what I don't yet know how
to. That's why Vim's help is essential: Notepad hardly has any help
worth mentioning, but remove the help and 99% of a user's capabilities
are still there. In Vim, remove the help and I can still use maybe the
25% that I can do without looking them up, but if I can't check the fine
points on the 50% that I know maybe halfway, and find out about the 25%
that I don't know at all, I'm lost. (Socrates: The more I learn, and the
more I see how ignorant I am. Using Vim is like being one of Socrates's
pupils: I've been using it for several years and I still discover new
abilities every day. Yesterday it was the :ilist command, which I didn't
know existed.)
Best regards,
Tony.
--
"One thing they don't tell you about doing experimental physics is that
sometimes you must work under adverse conditions ... like a state of
sheer terror."
-- W. K. Hartmann
From my own experience, the most effective way is just make vim the
default text editor. I also printed a cheatsheet on paper and carried
it with me while travelling in metro or sitting on toilet.
PS. the norm of this mailing list is "BOTTOM POST".
--
regards,
====================================================
GPG key 1024D/4434BAB3 2008-08-24
gpg --keyserver subkeys.pgp.net --recv-keys 4434BAB3
I think what I'm looking for is something like vimtutor, but just
slanted a little more toward developing muscle-memory. I want a solid
base of knowing that "w" goes to the next word, and that "h" means
left and "l" means right, for example. I know this sort of thing is
probably ridiculously easy for you, but that's where I'm at.
In a similar twist, I got into the habit of scrutinizing every editing
action under the assumption "the authors of vim are too smart/lazy to
allow this to be so hard/annoying" -- then go to the help and see if
something better exists. If I can't dig something up, I'll ask on the
list with details of what I've already tried.
E.g. in other editors, I'd have to hold down left/right arrows or use
control+left/right to jump a word at a time. This always bugged me.
However vim lets me use f/F/t/T motions to more precisely land where I
want to be. Same with text-objects -- in other editors I had no easy
way to specify that I wanted to perform an action on a text-object
(whether a paragraph, a block of code, the contents of
parens/brackets/braces/quotes, etc), so I'd have to move the cursor to
the start, hold down shift and move the cursor to the end. In vim, I
can just do things like
>ip
to shift the current paragraph right by one indent-level or
ci"
to change the contents of the string I'm in, regardless of where my
cursor is inside that string. (the quotation-text-object is a personal
favorite, added at my request and I use it ALL THE TIME...thanks,
implementor!)
Once you start looking for the rough edges in your editing experience,
and take the time to look for a more "vim" way of doing things, you'll
find yourself implementing those changes in your editing habits pretty
quickly.
-tim
You should remap the arrow keys to "nothing" or something else besides
direction. Force yourself to use h,j,k,l...that is the way to build
muscle memory. PRACTICE PRACTICE PRACTICE
Bob
and Tony replied:
> Yeah, thinking about it, it looks like we're once more against the
> conservative <=> progressive theories of learning....
(I often find your lengthy missives very interesting, Tony, I much
appreciate them.)
Yes, I know what you're on about, but I'm reluctant to accept such a
polar world. Personally I'm quite progressive on your spectrum but
quite conservative in many ways, being a practising Catholic, and a
family man.
> Vim is not a tool for the conservative...
I quite disagree; vim is for everyone, by which I mean it can be used
effectively by almost anyone. Over the years I've worked with many
colleagues whose use of vi or vim has been limited to a few basic
commands, people I'd describe as conservative learners in your
scheme. After a month or two of sometimes intense dislike they've all
come to love it; they all discover the dot key and suss the operator-
motion idea.
However, I agree that the conservative learning style severely
handicaps a vim user. My head shakes at some of the cases I
remember. (One lady used vi across a dodgy ethernet connection
for over a decade... then, in an attempt to evangelize vim, I told
her about vi -r. Hundreds of lost updates appeared.)
regards, John
Tony, I found your pejorative use of word "conservative" quite
offensive.
I could just as well argue that vim, having the roots it does in Bill
Joy's now ancient vi editor, represents a very traditional way of using
computers. And like most conservatives, I think traditional ways are
often best.
The postmodern, "progressive" computer user is probably using some
dumbed-down, web-based monstrosity hosted on Google. But even if he's
using something installed on his own machine, he certainly won't be
using anything as keyboard-driven or with as powerful a command language
as vim. He does all his work with pulldown menus, toolbar buttons,
drag-and-drop, etc. (How much editing power do you need to Twitter or
update your Facebook wall anyway?)
Maybe we should leave politics out of this mailinglist, eh?
and Charlie Kester replied:
> Tony, I found your pejorative use of word "conservative" quite
> offensive.
...
> Maybe we should leave politics out of this mailinglist, eh?
"conservative learning theory" does not have much to do with
"conservative politics". Just because a plain English word is used in
a political context should not forbid us from using in other contexts,
IMO.
Regards, John
Tony's mail definitely introduced some political overtones, imo.
But my reply was somewhat tongue-in-cheek. Sorry I didn't make that
clearer. ;-)
Tony Mechelynck wrote:
> On 08/04/10 12:49, John Little wrote:
>>
>>
>> On Apr 8, 2:44 pm, Duane Johnson<duane.john...@gmail.com> wrote:
>>
>>> When I learned to touch type in high school...
>>> ...practice those ones over and over again...
>>
>> I think you're swimming against the strengths of vim. In vim if you
>> find yourself doing something over and over again you stop and find a
>> better way, at the least record a macro.
>>
>> Regards, John
>>
>
> Yeah, thinking about it, it looks like we're once more against the
> conservative <=> progressive theories of learning (Reminds me of a
> recent comment I gave on one of Paul Krugman's NYT blog articles).
>
> A conservative learns by rote the same skills and the same prayers which
> his great-great-great-grandfather used before him -- I'm just
> caricaturing a tiny wee bit ;-)
More than a wee bit, I would say ;-)
: Learn How Not To Think And You Will Be
> A Good Conservative: Curiosity Is Original Sin, And Whoever Is Not With
> Us And Of Us, Is Against Us.
Given the progressive's penchant for dismissing opposing viewpoints as
the result of ignorance and inability to reason, I find it ironic that
we conservatives are the ones so often accused of intolerance... ;-)
Sincerely,
Brett Stahlman
...[snip]...
>
> Best regards,
> Tony.
I think you're swimming against the strengths of vim. In vim if you
find yourself doing something over and over again you stop and find a
better way, at the least record a macro.
The virtue of this approach is that you never fill your head with things
you never use. We each have a version of vim in our heads, customized
to our own particular needs.
Most of what goes by on this mailinglist, for example, gets tossed away
by my mental filter. But once a month or so, someone points out
something that speaks to my previously unrealized concerns. :)