So I end up compiling with VS and editing code in Emacs, because VS does not have a shortcut to switch between files quickly and because VS does not integrate with Git properly and because VS does not have keyboard macros and because I just don't like VS much.
Funny enough, I used to feel the same way as you do, though. I mean, how can you live without auto completion? But gradually I realized that in fact, I did not miss auto completion any more after a day or two not having it. And I did not miss a method browser either. And a menu bar. And... a mouse.
I think we humans are clever animals and we can adjust to any number of things. Me, I have been through IDEs (XCode, Eclipse, VS), Textmate, Vim and now Emacs. In the end I think it boils down to fun: I can work with pretty much any tool or language you throw at me. But to really get me going I need to have fun. And Emacs is giving me that. I am not quite sure if it really is any more or less efficient than XCode or Visual Studio or ed or whatever, but I know that I am magnitudes more productive when I am having fun than when I don't.
So use what you like best. Just don't forget that it is about having fun! Anyone who tells you otherwise... well, I frankly don't care. Have fun!
Switching between files works best with Visual Assist added. Alt-Shift-o search string will get a list of matching files, and approximates emacs buffer switching.
Regarding the great IDE vs emacs/vim debate, I find using the IDE is best when working with code, and emacs for everything else. Occasionally I'll need to do something more complicated or that can be automated with an emacs macro and I edit the file there instead.
emacs lives on every server I have to work on.
emacs works with every language I have to use for work, including C/C++, Fortran, LaTeX, Python, Shell, and every language I like to play around with, including Haskell, Clojure, and Common Lisp.
I switch between tasks often enough that the fact emacs can do all of them (and doesn't crash all the time like Eclipse...) is great.
Solving the problem at hand in a good way is usually far slower than editing the text in my experience. Maybe I'd think different about that if I went back to using C++, or were coding in Java or another verbose language, but thankfully I don't have to.
But the bigger reason is: They are GUI apps. I do 99% of my work over ssh connections to servers where I have lots of screens open and waiting for me to attach with all the state I want ready and waiting no matter which machine I happen to connect from.
I have shortcuts for a dozen machines or so on my desktop that throws me straight into a screen over ssh, and even in the two cases where those machines are across the Atlantic for me, my screen with my editor windows is open faster than any IDE I've tried will open locally on my machine.
Being limited to local editor-state seems to me to be a huge step backwards.
Auto-complete isn't about typing speed. It's about API exploration.
* No CTRL+D duplicate line in VS
* Can't use middle-mouse in VS to select multiple columns
* Can't place your cursor in many multiple locations at once in VS
* You can use ALT+DRAG to select columns in VS but there's no way to put a carat at the end of each of a bunch of lines of varying sizes
* CTRL+J to append the next line to the current one, removing all whitespace. I feel as if this has saved me a year of life.
Those five alone are extremely useful when writing JavaScript and HTML.
* The autocomplete in VS does not "learn" like the sublime text one does.
* No good incremental search in VS (might have changed on the very newest version?)
* CTRL+B opens the current HTML page being edited in my browser on sublime text. There's probably an equivalent in VS though
* highlighting a string of text highlights all similar ones in sublime text. In VS for C# it sorta does this if the string of text is a token
* The ability to sort and shuffle lines in sublime text can be useful at times, though this is usually when preparing data and not when writing code.
* Ctrl + D does copy lines
* you can place the cursor at multiple places since VS 2010
* Extensive search with R# (Search files, classes, methods... * using CamelCase, fuzzy..)
* sort shuffle lines, methods or any blocks with R#.
So ok, it's R#, and I agree that ST2 is amazing out of the box. (LOVE it for the Rails side project I work on) but adding R# (or standalone add-ins) to visual studio will get you there too.
Navigation within a .NET solution will always be better with VS + R# in my opinion.
1. Ctrl+A Select all the lines
2. Ctrl+Shift+L to split into multiple cursors, 1 per line
3. Home/Ctrl+Shift+arrows/etc to select stuff to copy/delete
I find it easier than constructing a regex to pass to find/replace.
so you got some property names like
a
b
c
d
now convert them into ['a', 'b', 'c', 'd']
with ST2, you middle mouse vertical select, ctrl+right, press ', then end, press ,, then del.
You'd get it if you did.
I say this with a carefully crafted and organized .vim folder.
And I have an .emacs.d folder carefully crafted over 20 years.
Looking at the new features in Emacs 24 I expect my config to shrink even more. I am still on Emacs 23 but will switch when it both shows up on Debian Testing and when my workstation needs a reboot.
If only it were that easy. Programming trends change drastically. What is fashion today, isn't tomorrow. You need tools that survive this for years(In case of vim and Emacs its decades).
I am all ears to hear about the 'tools' that you talk about.
I use Eclipse for Java, VC++10 for C++, and ST2 for everything else. "Everything else" is a hodgepodge of things; dynamic scripting languages, JSON/CSV files, plain text files, etc. Basically everything one may use Notepad++ for, true; but I've found that I much prefer the ST2 interface, a subjective conclusion on my part. It's fast, it looks nice (to me), and I like the API.
IDEs are valuable when doing what they were designed for (I use Eclipse when I write Android apps, and I'd probably use Visual Studio if I was going to write something for the MS stack), but I'm rarely doing things that fit nicely into their world, and I end up spending more time fighting with them than they are worth.
That's just for me though.
Also: you can get completion in many text editors if you install the right plugins. See the GoSublime extension that I mentioned for example.
Specifically for programming I cannot see why you would use this as opposed to something like Visual Studio with its context aware auto-complete (massive productivity increase).
But then again I also don't get why someone would use Vim or Emacs when you have GUI based tools available (even freely). Even for non-Windows programming Eclipse exists and has a decent (if slow) context aware auto-complete for many languages.
The only justification I've ever heard for people's continued use of tools like this boil down to either "I know the shortcut keys" or "I don't have to use the mouse."
Which to me is odd within its self as very little of my programming efficiency is lost mousing around, and a lot more lost having to jump around code blocks because auto-complete didn't magically know what an object's members were...