A typical shell uses a 'readline' library for input, these libraries in fact provide an stripped down editor that can only edit one line at a time. Most readline libraries either use a subset of the VI keybindings (this is even specified by the POSIX? standard for shells) or a subset of the Emacs keybindings. The bigger shells allow the user to choose between VI and Emacs keymaps.
Of course one can also execute shell commands from the most bigger text editors on unix, also most more advanced text editors have some kind of 'file browse' mode to manipulate the filesystem. So it can be considered to be a matter of taste whether you use a shell from your editor, or an editor from your shell.
Basicly we call our program a shell if it has job-control and handles text from stdin; and we call it a texteditor if it primarily handles text from files (typicly including a file-browse mode, but uses a 'shell out' construct for system commands).
Also, the concept of job control in UNIX systems (like Solaris or Linux) is a bit different than on other operating systems.
Finally, I think of the alternative shells that you might find on Unix and DOS that are based on NortonCommander? or XTREE?. These are FileManagers? that people stay in just like Shells.