I would like to know the proper substitution command in vi that would accomplish this.
This is a normal vim substitute command with
; as separation character; you can use other characters beside the default
/ as separation character, as long as it does not appear in the expression.
%s : Do substitute command on the entire buffer [.?!] : match every . or ? or ! and \_s* : match every whitespace including newline after it if there is any, and \zs : start the match from here and \<\w\+\> : select first word \U& : then make it capitalize (or use \u& to only capitalize first character) g : globally