When using 'Replace', if the search string is not found, and you click 'Once', the replace string is inserted at the current position. It should do nothing. (Or better: the Once and All buttons should be greyed out if there is no match.)
Even more subtle: if the search string is found, but then the user moves the caret or makes a different selection before hitting 'Once', the wrong text gets replaced.
I guess when the user manually moves the caret off the search result, the Once button should grey out.