Can this can be done in Vim?
What I mean is: searching for \'BadJob\' and replacing with \'GoodJob\' would do the following replacements
sure u can
:s/\cbad/\= strpart(submatch(0), 0 ,1) == toupper(strpart(submatch(0), 0, 1)) ? "GOOD" : "good"/
ps. i'm guessing keepcase.vim encapsulates some similar logic :)