I think this diagram is useful not as a user reference manual, but as a discovery tool. I look at it and say "I know that, I know that, I know that- oh! I didn't know that one." I think it should say "Prerequisite: complete vimtutor" at the top, or have something else so people unfamiliar with vim don't just have their eyes glaze over when they see it. Perhaps a note explaining that very few people actually know all of these commands, and you only need to know about 5 of them to use vim. Basically, the graphic would be much more useful with some context to explain how it should be used or not used, by whom, and what it contains and doesn't contain.
Agreed. I wouldn't ever use this to learn Vim, but after using Vim as main editor for a few months it took very little time for me to find something new and useful, namely using s/cc/S/C to insert.
I think this would be even better if the nodes would be links to documentation. That way if you discovered a node you knew nothing about, you would just click it instead of having to google it.
Speaking as somebody who learned Vim two years ago, I'm able to follow this diagram and recognize most of it, but in everyday flight I don't use all of it.
A little bit every day and you'll be there in no time.
EDIT: I should say, I took some time to go through every part of the diagram and it's been very helpful for forming a better mental model of Vim. It will look scary to the beginner, but for the moderate to advanced vimmer, this is a very useful learning tool provided you take some time to understand.
The thing about diagrams is that they often encode as much information as you might find in an essay, yet since the information is presented all at once, we have the expectation that we should be able to understand it immediately. It should take 10-20 minutes to understand this diagram.
I am pretty proficient in Vim and this diagram scares me. I can understand it if I try, but it does nothing to improve my intuitive sense of Vim commands.
Don't let this scare you. Learn 10 basic Vim principles and they will serve you 95% of the time. All this extra stuff can be learned incrementally on a case-by-case basis.
Definitely don't let this discourage you. I've only been using vim for about six months and I do not know all the commands and modal changes on this diagram.
The great thing about vim is you do not need to know very much to be productive, but every day you learn something new that will make you more productive.
While this is a great reference writing a vim plugin or looking up the behaviour of a specific command, I don't really see it as a learning tool.
Au contraire, I find this to be a great learning tool. As a post-novice vimmer, this is the first time that I've been able to see it all laid out like this so that I can see what I know already, what's left to learn and how it all fits together. I didn't even know "select mode" existed before this (though I promise I'll never use it – even MacVim uses visual mode with the mouse). I've saved this to my help/vim folder and I plan to refer to it periodically.
I agree, it's not really a learning tool (for a novice). Some commands here are pretty obscure; you wouldn't use some of them very much or at all, but that's not evident in the diagram. And you also have the right idea about learning vim incrementally (http://yehudakatz.com/2010/07/29/everyone-who-tried-to-convi...), instead of the "learn everything in parallel" approach that some advise.
Thanks for the link. I'm only just starting my second year of University now and I feel like skills with Vim will be an invaluable thing to have for my course.
Do you play videogames? If you have played any RPGs, strategy games, or even modern shooters, you can handle vim. That is, when you're playing a game like Starcraft/Warcraft/Final Fantasy Tactics, you have to build a similar state machine in your head, you reference it and manipulate it all the time, and you do it because it's fun.
Modern shooters have become just as complex, with the various options available to you. If you can do those, you can use vim.
I've been using Vim exclusively for about 2 years now, and I don't even want to begin to know what the hell is going on in that diagram. It was clearly not created for the purpose of teaching Vim but probably as an exercise of mapping out all the possible transitions between various modes and motions. Cool beans, but I hope the novices don't mistake it for something else.
If you're still on the edge about Vim, there have been a few good articles on how to begin learning it. What worked for me personally was learning the very basics, how to enter insert mode, how to save and quit, and starting to use Vim as a regular mode-less editor while slowly learning about various useful things you can do in normal mode ("hey, I can delete a word or a line with two key presses"). That way you can begin to extract use out of it immediately while growing increasingly efficient with other modes.
If you're on a Mac, MacVim gives you native OS X shortcuts for things like Copy/Paste, and maps selecting text with the mouse to visual mode which, combined with using insert mode, gives you the same functionality as a regular mode less editor would.
I was just watching Bret Victor's Inventing on Principle talk and thus learned about Larry Tesler. He says Larry Tesler dedicated his life to removing modes from software back where was no such thing as modeless editing. Perhaps this is why.
I watched the talk and was caught off guard by his mention of Larry Tesler. I can understand why because that did usher an era of easier to use text editors.
However, I'd like to emphasize that there is always a place for tools that are sufficiently complex such that it allows the craftsman wield it proficiently. Past a certain point of simplification, a tool would lack the necessary vocabulary to express things succinctly. Like why Jargon is necessary sometimes.
However, I think Vim is fundamentally a finite state machine. While complex, once you grok the mental model of how it works, everything else comes quite naturally. So fear not.
I find it interesting that emacs is basically the modeless Vim. I imagine that there are modes involved, but chorded input is basically modeless. I wonder if it makes a difference to the craftsman. Perhaps I should learn emacs to understand the difference.
I'm currently going in sort of the other direction. I'm usinge evil-mode which is VIM implemented in Emacs. Emacs does have many of the powerful features of VIM but what it lacks are composable commands. So what in Emacs would take NxM separate commands can be supported in VIM/Evil-mode with N edit commands and M movement commands (not to mention the modifiers like (i)nside or (a)around). I find myself intuitively using combos ive never used before, it just makes sense that they would work whereas I would have had to learn them individually in Emacs. What Emacs has that VIM lacks is it's amazing customisability, I love switching to scratch and changing how my editor works on the fly, I also totally rely on Org-mode along with my customisations of it (I even use it to generate my website!). I'm sure it's not for everyone and I wouldn't recommend it to someone without Emacs, or at least VIM, experience but for me Evil-mode really feels like the best of both worlds.
(commenting from my phone so please excuse weird autocorrect thingies)
you don't need modes for richness of expression and complexity- Modal errors can mystify even the most experienced of users- and waste vast amounts of time while you're learning to use VIM. Emacs is really no better. Sublime Text 2 is as close to modeless as I've seen, but there's still a long way to go.
This diagram doesn't include any of the q-macro system, hardly any of the :commands, and only a very vague box saying "operator" for a large class of actions and motions Vim users are constantly engaging in.
In short, this is a woefully incomplete diagram of a summary of a subset of the VIM Mode Transitions. Maybe it could be a start for a serious effort down the line.
I've been using Vim as my main editor for over a dozen years. Nevertheless I'm sure there's mountains of stuff I've never learned or understood that is also left out here, but I'm such a rank beginner that I just don't know to mention it.
In short, this is a woefully incomplete diagram of a summary of a subset of the VIM Mode Transitions.
Alternative take: "This is an incomplete diagram, but still useful because it covers the common subset of transitions that many people go through." You're almost hostile, and I find that strange since I think this is useful even in an incomplete state.
Take a look at the current comment #3 on this page "As someone who is thinking about learning Vim, this diagram is severely daunting." Can you better understand the challenge now to making such a diagram & choosing what to include or leave out? To a beginner it looks impossibly complicated, to a power user it looks anemic.
>hardly any of the :commands, and only a very vague box saying "operator" for a large class of actions and motions Vim users are constantly engaging in.
So what, include every single :command? What would even be the point of such a graphical; it would be impractically cluttered. Bear in mind a new user already considers the graphic too complicated: by adding in all the :commands and operators, you just drove away the next tier of beginners. :p
My points are a) it's difficult to make such a graphic representation of vim modes and transitions b) it is (imo) impossible to make such a graphic that is both easy enough for beginners and robust enough for crotchety power users. I think an all-things-to-all-people diagram would be useless to everyone.
Yes - just a starting point. My focus was just on mode transitions. I am considering creating other diagrams that focus on other aspects of vim such as operators/motions. I may also create some simplified versions too. (But I am not sure I will try to combine everything into a single diagram...)
I admit this one is daunting at first. Keep in mind that it's just an early draft. As I was making notes for myself, it was fun to see it take shape... and it was kind of like solving a sudoku puzzle to get it laid out without overlapping edges. (The fact that it is planar is just a fun coincidence). I have other interesting diagrams that I have scratched out too...
Most of the modes and transitions won't be of interest to everyone. Think of it a roadmap/atlas of places you could go. (Some people may like reading tables... I like to see things laid out visually. Although I am thinking of creating an adjacency matrix that is partitioned/clustered so it can be collapsed into simpler views.) Just like people make simpler maps to tell friends how to get places, I fully expect it will be useful to make simplified illustrate that only shows a subset of this more detailed transition map.
One commenter mentioned that my gp sounded hostile. I didn't intend to (it was late at night). I found this interesting enough to comment on. I hope you have more ideas about how to illustrate a great tool.
Thanks for pointing that out. I neglected to mention you can transition between the visual modes once you're in one... and I didn't realize you can toggle back out to normal mode by just pressing v, V, ctl-V from visual, visual line and visual block modes respectively.