もはや何番煎じか分かりませんが、自分用に関数を書いたので置いておきます。
(defun my/region-replace (str newstr begin end)
"指定範囲内で置換を行う"
(goto-char begin)
(while (search-forward str end t)
(replace-match newstr)))
(defun my/replace-with-comma-and-period ()
"選択範囲内の句読点をコンマとピリオドに置き換える"
(interactive)
(let ((curpos (point))
(begin (if (region-active-p)
(region-beginning) (point-min)))
(end (if (region-active-p)
(region-end) nil)))
(my/region-replace "。" "." begin end)
(my/region-replace "、" "," begin end)
(goto-char curpos)))
"M-x my/replace-with-comma-and-period"
を実行すればよいです1もちろんキーバインドを設定した方が楽で良い。範囲選択を行っている際はその範囲内で置換を行い、範囲選択を行っていない際はカレントバッファのすべての範囲で置換を行います。
今まで毎回"M-%"
で置換してたけど多少楽になるね!