Berikut adalah salah satu cara melakukannya yang hanya menggunakan fungsionalitas bawaan:
Dengan titik di baris yang berisi kemunculan pertama begin
, tekan C-SPC.
Pindah ke kejadian berikutnya end
:
C-s end
RET
Ganti foo
dengan bar
:
M-% foo
RET bar
RET !
Ini memanfaatkan fakta yang query-replace
akan berfungsi pada wilayah aktif alih-alih seluruh buffer jika ada.
Tentu saja, Anda juga dapat mendefinisikan perintah khusus:
(defun replace-from-to (beg end str repl)
(interactive "sBegin: \nsEnd: \nsString: \nsReplacement: ")
(save-excursion
(goto-char (point-min))
(let ((start-pos (search-forward beg))
(end-pos (search-forward end)))
(replace-string str repl nil start-pos end-pos))))
Perintah ini akan selalu mencari dari awal buffer, jadi titiknya bisa setelah begin
/ foo
/ end
ketika Anda memintanya.
Siapkan kunci yang mengikat untuk itu melalui:
(global-set-key (kbd "C-c r") 'replace-from-to)