Change One, Then Just Tap Dot

Why not :%s

A substitute is all or nothing. Often you do not want all of them — one match might be inside a string, where renaming it would be a bug.

The move

/\<total\>          " search, whole words only
cgn                  " change the next match
subtotal<Esc>        " type the new name
.                    " next one
.                    " and the next

gn means the next match of the last search, so cgn means change the next match. Because the change is defined that way, . does not just repeat the edit — it finds the next match first, then repeats.

Skipping one

When the next match is one you want to keep, press n to step over it, then carry on with ..

Mind the boundaries

Search with \< and \> when the new name contains the old one. Renaming totalsubtotal without boundaries makes the search start matching its own output, and the renames pile up into subsubsubtotal.

The payoff

Five renames, one deliberately skipped, and a single keystroke each after the first. No substitute command, no confirm prompt, no plugin.