Combining vimgrep and cfdo you can easily
Find all instances of search string in the project
:vimgrep /search_string/gj **/*
Check quickfix list is correct
:copen
Find and replace and save files
:cfdo %s/search_string/replace_string/g | update
Source: https://engineeringfordatascience.com/posts/how_to_search_and_replace_across_multiple_files_in_vim/