Ruvi includes a large subset of Vim/Vi functionality. Due to the fact that its written in pure Ruby it is trivial to extend and to implement missing vi functionality as plugins. It includes a gtk2 frontend and curses frontend.