Many IDE features aren't necessary in Emacs and Vim, both of which have incredible generic text-manipulation capabilities.<p>Want to add setters/getters to a Java class? Use YASnippet or SnipMate. Want to rename the local variable foo to bar? Use a scoped regex. Once you grok the power of generic text-manipulation, you can use it everywhere and in ways that IDE users can't imagine. (See <a href="http://steve-yegge.blogspot.com/2006/06/shiny-and-new-emacs-22.html" rel="nofollow">http://steve-yegge.blogspot.com/2006/06/shiny-and-new-emacs-...</a> )<p>Two caveats:<p>1. Scoped regexes, like C-M-h in Emacs, require a proper parser, which is what IDEs are all about. But I prefer starting with a text-oriented editor and tacking on AST-aware IDE features, than the opposite.<p>2. Emacs and Vim have poor support for renaming class methods across files. (Possible solutions are XRefactory for Emacs and Mozilla Pork for Vim.)