0

I can do M-x query-replace and replace all strings with another one. But it only replaces ones below the current cursor position. Is there any way to replace all the occurrences regardless the position of the cursor?

  • Do `M-<` to go to the beginning of the buffer. In elisp do `(goto-char (point-min))` or use the optional arguments in `search-forward-re?`. – rasmus Aug 02 '16 at 09:16

2 Answers2

3

You could use this function for replacing strings

(defun replace-in-buffer ()
"Replace text in whole buffer. Change OLD string to NEW string"
  (interactive)
  (save-excursion
    (replace-string (read-string "OLD string:")
                    (read-string "NEW string:")
                    nil
                    (point-min)
                    (point-max))))

and bind it to key with (global-set-key (kbd "C-c r") 'replace-in-buffer)

Thanks @rasmus, you could use: M-<, M-x query-replace <from> RET <to> RET, then press ! for replacing all occurences and C-u C-SPC twice to return point into the initial position.

Since query-replace bound to M-%, this could be helpfil when replace regexps too How to search and replace in the entire buffer?

Konstantin Morenko
  • 1,407
  • 9
  • 19
1

M-x replace-string is what I use, unless I did not understand your question.