It's very difficult to implement a basic find-and-replace feature for expressions, because you can easily create hundreds of invalid expressions.
For example suppose you want to find-and-replace to rename a variable "foo" to "bar". But you also have a Sprite object called "football" and it is used in hundreds of places. A simple find-and-replace would also rename all those references to "football" to "bartball", which doesn't exist, and makes all those events invalid.
Perhaps there could be some kind of "find-and-replace only if the resulting expression remains valid", but there are still lots of ways for that to mess up unexpectedly, e.g. what if there was an object named "bartball"? For this reason, even when coding C3, I rarely use find-and-replace on code - I go through and manually change every reference making sure it's what I really want to update, because a naive text find-and-replace too often goes wrong.