Alternatively, you could use Perl to do that scripting. Forget awk, sed, and never say "typeset" again.
Saying "set -o vi" works quite well on my home systems (using bash) as well as at the office (ksh). Sounds like you got a different problem.
Again, though, none of this has anything to do with the kernel itself.
I don't really differentiate between the kernal and what it takes to talk to the kernal. Pretty much, to me, the UI is the OS. And if it's an obnoxious UI it's an obnoxious OS.
Which is why I'm building a golden idol to Bill Gates, our Savior from the evil comic book guys and unix in all of its evil forms.
Today I had to figure out how to make a bigger file and I learned that I need to know what a "stanza" is for chsec. Of course, the comic book guy who wrote the man file doesn't say. And nowhere in my googling did I find out what a stanza is, except for what I already know, a section of poetry.
The only poetry in linux is when it finally gets all the launch codes and destroys itself by destroying all of us. Even that's not poetic but there'll be no obnoxious comic book guys around afterward to argue the point.
DEATH TO UNIX! LONG LIVE THE NEW FLESH.