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 2 '16 at 9:16

You could use this function for replacing strings

(defun replace-in-buffer ()
"Replace text in whole buffer. Change OLD string to NEW string"
    (replace-string (read-string "OLD string:")
                    (read-string "NEW string:")

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?


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

  • 1
    Worth noting that replace-string operates on the region and if no region is set then it defaults to the entire buffer.
    – Tephra
    Aug 2 '16 at 12:23
  • Using formatting could make you answer looks better. Try put "M-x replace-string" into "`". Aug 2 '16 at 19:44

Not the answer you're looking for? Browse other questions tagged or ask your own question.