That is, some path to your solution should always be immediately obvious and that simplest path should always be the correct one. Clearly an unachievable goal in the general sense, but surprisingly doable overall in statically typed languages. One example: I know I have to call A.F(B), so I know that I need to construct B, which offers B.ctor(X) and B.ctor(Y), but I don't have an X, so clearly I need B.ctor(Y) ... etc. IntelliSense would have pointed you right to it!
I used to have a tendency to thumb through IntelliSense (and sometimes I still do!), but have taken to reading the docs before starting because most of the libraries I interact with are just too complex! The real problem is, that the majority of code that I consume isn't documented at all anyway, so hunting through the class hierarchies (or code directly) is all I've got.
For the record, my tools are: C/C++ = Visual Studio and Source Insight; C# = Visual Studio with Resharper; Java = IntelliJ IDEA; Python = Wing; Javascript = gggrrrrrrrr; XML, HTML = Notepad2; Other text files = Notepad2 or Visual Studio; whichever has the focus :-)
I'm actually quite proficient at Vim. I used it day in and day out at Google for 3 months. It just drove me nuts. Vim (and presumably Emacs) are fantastic general-purpose text editors. Too bad I only spent a tiny portion of my time editing general text. I spend the vast majority of my time editing CODE.
I noticed a big difference when I transitioned from Visual Studio/Netbeans type coding to Emacs. I stopped hunting through class hierarchies and started, you know, actually learning the libraries I needed to use. Emacs lets me be the magician.
I haven't programmed using XAML, but it reminds me of the .ui file produced by Qt Designer, which I've edited by hand at times.