There is this strange vibe around beginner programmers or even older programmers that pick up Linux and the Linux environment in general, to think that restricting themselves to VT100 terminals is pure gold, and they should stick to that for as long as they should live. This sort of elitism is the usual driver behind people dropping Linux and jump back to using Macs and Windows desktops.
There is no real reason to resort to this sort of painful penitence, but people will occasionally convert a gifted young adult to this sort of crap, in the name of all that’s good and pure (their egos, that is). But there’s really no point in restricting yourself to learning programming with vim, console tricks and gdb. So please, kids, stay in school, off dope and vim.
There is absolutely no reason to learn vim in this day and age. The most you should need to learn is how to quit and how to start editing for the occasional remote SSH connection. But very few people need to do that: only those that do heart surgery on servers need to really master this, because nowadays, with the internet connection we usually have, doing a remote desktop connection works just fine, as well as running X applications through SSH (as long as you’re running under an X server).
So why should people learn the complicated way of editing multiple files in a 80×25 grid? Why do some programmers insist on driving people nuts and recommend stone age tools? There is this growing elitism in people that is satisfied by doing something overly complicated without any real reason to do so. It’s like eating with a one-meter fork instead of the usual fork, just because you’re cool, with no real gain in food consumption or digestion. Sure, it helps you keep your diet, but you might as well throw that meter-long fork and go for an overly expensive one thinking that’s the only sane thing you can have (ie. Mac).
UNIX used to be the pinnacle of innovation for the users. Linux nowadays has the amazing possibility (amazing give its heritage) of not requiring a single second of console; and indeed, most main stream distributions try to do that for you. Ubuntu, Fedora, OpenSuSE, they all try their best so that you don’t need to fight with the black lacing of the scary terminal. In fact, if your work would ever require starting a terminal, the distributions already failed; unless, of course, your point is using the terminal, for running scripts that make your job faster than it would otherwise.
But to recommend nowadays vim as a programming environment is stupid elitism and megalomania. Yes, maybe you use it and yes, maybe you’re proficient in it, but why should anyone else suffer? Why learn a number of skills that offer no value? Why learn the intricate ways of vim, if you can do just fine with a normal editor, and you can do better than vim by using Microsoft’s Notepad, a program that was written by a programmer in his first morning of the year 1993, while trying to sober up after promising himself to learn Windows programming in the year to come.
Seriously, Notepad is way better than vim, and if you can use Notepad instead of vim you already have a gain in productivity. I’d recommend Notepad over vim anytime.
That’s why QtCreator is what I recommend when people ask “What tool/IDE/Compiler would you recommend for practicing programming (C++ as of now) for a beginner?“. QtCreator is cross-platform, but does well the job of an IDE, without the hassle of elitism being thrown in your face. You can always do things by hand, but if the IDE helps, why not take that? Why punish yourself?
Seriously, everyone, stop selling vim to kids. Emacs too. In the holy war between vi and emacs, Notepad++ won big time.