I've found this little trick in vim wiki.
nnoremap <Leader>s :%s/\<<C-r><C-w>\>//g<Left><Left>
Immediately I thought that in some cases it would be beneficial to use word in substitution, so I've added capturing parentheses for back reference.
nnoremap <leader>* *:%s/\v(<<C-r><C-w>>)//g<Left><Left>
I'm using this primarily as a replacement for rename refactoring, so I thought: "You know what? In all those IDEs when I've renamed things it's always been a little pain to change one or two words in multiword variable".
I mean something like
firstSecondThird. Thanks to extensibility of vim this should be easy to do. I just need to split the word under cursor by rule that depends of whether its a camel case word of snake case word (easy to determine if we would take as a rule, that the word either a snake case or camel case, but not both). And then to produce the argument to the substitute command with each actual word in variable name surrounded by capturing parens, like so.
With that if I need to change second word all I need to do is enter
Which is pretty neat in my opinion. The problem is that I don't know how to make a mapping call substitute with dynamic parameters.