I'm working on a custom text editing application for a line of business app, and as part of this, I need to implement Find and Replace, and, in particular, Incremental Replace. By this I mean the ability to search for a text string and see that there are, say, 100 instances of it in the document, and then navigate through each one, deciding whether to replace that occurrence by the replacement string.
In Microsoft Word, Find lets you see a list (in the Navigation panel) of the found words, with a bit of surrounding context, and highlights the current item and any other visible items in the text panel, and you can cycle through the items:
But they way they do Replace feels very different and disorienting to me. If you are replacing (even if you choose Replace immediately after doing a Find), it drops the find results and shows this dialog:
The thing I find the most jarring is that it shows you the current item, and you can replace it or all of them, or just skip to the next one. But if you replace that current item, it jumps ahead to the next one anyway, and you can't jump back to the previous item or even see if that replacement looks right to you. You can search for it, or scroll up, but it's not highlighted and then you lose track of the replacements that you were doing.
What would be a better idiom for Find and Replace? I mean where the list of found items is preserved, you can see where you are within it, and if you make a change, it moves on to the next one, but you can move to the previous one to see what you did and edit or undo it, and then resume the navigation through the found items.
As I was writing this all out, I started to think that the UI I'm talking about is similar to what Word does, except that I would also keep the Results list, updating it with the changes, and keep the same navigational ability as you have with Find.
But is there a better way to do this? Is there an app with a more intuitive Find and Replace model that I could borrow from? I should add that my audience is subject matter editors who are, generally, non-technical users.