That's available in vim via the vim-abolish[0] plugin... which has other capabilities, but the one I take advantage of is case-preserving S/one/two/ which does what you want.
It's odd vim doesn't have that builtin, I'm half convinced it does and I just haven't dug enough to find it.
Great when you want to refactor a name that's used both as a variable and a CONSTANT in one go.