Depending on what kind of programming you do, though, I'm going to have to agree with the other posters who've suggested vim or emacs. I'm a vim person, myself, but there's nothing wrong with emacs at all. I guess, go for vim if you really want to go minimal; go for emacs if you want to simplify with the ability to build out your text editor into an IDE.
The big reason I say you might as well go for vi or emacs, though, is because without an IDE, you will likely need to spend more time at the command line - whether that means running your compiler, firing up your debugger, etc.
I never bothered learning some of the more advanced techniques with vi, but I've written some fairly big projects in a terminal using screen, vi and "perl -d". One little tip I think is worth passing along: I declare my functions in perl like this:
sub my_method_name # the method that does that thing and returns a hashref
{
..
}
The reason I think this is worth mentioning is because it saves me so much time when working in a terminal with a minimal toolkit: I run "grep -nr ^sub" and it returns all my method definitions with a brief (one line) description. The output from that grep is like a mini "whatis" database o my codebase.