I've been for long using VIM as my main editor and never touched an IDE since. This works great for most of the programming languages on the market. When it comes to C, though, I still fell limited to simple projects, because writing makefiles is too cumbersome. How do the "Unix as IDE" philosophy deal with makefiles? Is there a tool I'm not aware of that does that particular job from the command line, or is everyone just writing the makefiles themselves?
There are quite a few tools around to generate makefiles. The two most common ones are CMake and Automake; both of these ask you to describe the components of your project and the desired output, and generate makefiles for you.
This is no doubt a matter of opinion, but you'll probably find CMake easier to get to grips with; if you ever need to cross-compile though, you'll end up needing Automake (and Autoconf).
For simple projects, the built-in rules provided with GNU Make can help quite a bit; for example, to build a project consisting of two source files,
b.c, the following Makefile works:
all: a a: a.o b.o
make will figure out that
b.c need to be compiled, and linked to produce
(As AProgrammer points out, the built-in rules only go so far, and your makefile needs to specify all the relationships between files, including your project's headers; you'll quickly end up reaching for other tools to help manage dependencies etc.)
You are misinformed about Makefiles. Unless you are building something complex, a simple project will call for a simple Makefile, easily maintained in VIM. No need for an IDE. It is true that IDEs love to create horribly complex Makefiles, but that's why you hate IDEs, isn't it?
Makefiles become complex as you ask them to do more complex things, such as adapt to multiple operating systems, or complex code generation schemes. If you have a pile of source files and you need to compile them and link them into an application, you have nothing to fear.