emacs. It has everything you want.

http://www.gnu.org/software/emacs/emacs.html

Z.