The first part discusses Graphical programming tools such as Visual Studio. The first quotation was:
I will fight you if you try to take away my text editor," said Don Box, a Microsoft distinguished engineer.
Notice he says text editor, not IDE.
Visual Studio is an IDE that includes a text editor, graphical programming tools and many other tools. The article discusses text editors vs graphical programming tools, not IDEs vs text editors (which wouldn't make any sense). Probably that the text editor Don Box was referring to was the Visual Studio text editor.
It absolutely is abstracting away from the compiler. However, not to the degree with which IDE's tend to do it.
My preferred build system, GNU Autotools, is still very close to the metal so to speak. The M4 macros are only light wrappers around the compiler and make. One still needs to understand the macros, parameters, perl, makefiles, and what they all do.
For instance, if I want to compile my program to target a specific architecture I have to know how the compiler works:
../configure CFLAGS='-m32 -march=atom -O2 -s -DRELEASE -Wall -ansi -pedantic' --prefix=/usr --target=i686-pc-linux-gnu
So the only difference is that you have to type in the command by yourself (or copy-paste it from somewhere else), instead of selecting the switches from an annotated user interface explaining what they do. I could easily argue that the latter makes the various switches more discoverable and easier to understand promoting better understanding of the compiler's options, so I don't see how the method of entry you use is somehow superior.
Okay, how would you put quotations around every line in a file in your IDE text editor (we're talking about OOTB)? In Vim, I'd type the command
Wow, it supports regular expressions! Just like every other IDE then
Or perhaps global substitution:
Can it do semantic renaming (i.e. real refactoring) or just blind cut-paste?
go to line 1028:
Visual Studio: CTRL-G 1028 (not that I ever use this, CTRL-T + [name of the type or member] is far more useful, I don't learn line numbers by heart)
Search for the next instance of the word the cursor is currently on:
CTRL-SHIFT-Up/Down (previous/next occurence). Semantic, not textual.
get a webpage:
That's cute. There's actually a web browser in Visual Studio.
jump back ten words:
Delete the next eighteen lines:
Do you actually find that useful? I mean, if by doing that you intend to navigate somewhere precise or delete some particular lines, you have to count exactly how many tokens or lines you'll need to input. That sounds like a lot of mental work.
Common commands based on semantic understanding of the code (Go To Definition, Navigate To, Incremental Search) seem far more useful and easy to use. If I'm working with a 2 million LOC solution with 50 projects and I want to jump to some method which I think had the words "Start" and "Incremental" in them, for instance (something I'm actually likely to remember rather than line numbers or token counts that change daily through hundreds of changesets), I can type CTRL-T "StartIncremental" and immediately get a drop down list of all type names and member names in the solution in order of relevance that contain these words.
If I know the name of a particular method called GetAllFilesInDirectory I can just type CTRL-T GAFID (using just the capital letters) and jump to it without ever having to look at any search results. If I have my cursor on a token and want to know where it's defined I can just hit F12 and it goes to the point of definition. If that is in some external library, I get a view of the metadata. With popular extensions like Resharper I even get a disassembly so I can see the source code even if written by a third-party. Can you do that in VIM?
If I want to change the name of some token with my cursor on it I can type CTRL-R-R [new name] Enter and automatically global semantic (i.e. not textual but actually replacing the instances of that token, if it's a local variable the scope is limited to the method, if it's a type the scope is all the referencing projects, etc.). Can you do that in VIM?
Does VIM OOTB give you any code completion? Does it underline errors as you type so you don't have to compile to catch common typos?
Does your editor allow you to see for every line of code what is the latest changeset that modified this line and a link to jump to it directly and see who did that and why that line was changed?
You can count the words in a text file easily, but can you get a count of actual lines of code (excluding lines with just braces or whitespace)? Cyclomatic complexity? Track how many types each type references? This is all stuff that I do, conceptually, from my "text editor", because it's actually a "code editor" that understands my code and gives me really useful information and tools that process my code as code and not just text.
You seem quite impressed with the ability to use regular expressions or basic textual navigation commands making me wonder if you've actually ever used a quality IDE with proper refactoring tools on a very large codebase and witnessed the power and productivity that this gives you. I mean, Visual Studio's text editor supports all the stuff you mention in VIM (except perhaps invoke command-line utilities), but I rarely ever use that because there are so much more useful and powerful options available.
Except we don't have to switch between applications. I can run everything from inside Vim if I like
So you're using Vim as an IDE then?