นี่คือวิธีหนึ่งในการดำเนินการที่ใช้ฟังก์ชันการทำงานที่มีอยู่แล้วเท่านั้น:
ด้วยจุดในเส้นที่มีเกิดขึ้นครั้งแรกของการกดbegin
C-SPC
ย้ายไปที่การเกิดขึ้นครั้งต่อไปของend
:
C-s end
RET
แทนที่foo
ด้วยbar
:
M-% foo
RET bar
RET !
สิ่งนี้ทำให้การใช้งานของความจริงที่query-replace
จะทำงานในพื้นที่ที่ใช้งานแทนบัฟเฟอร์ทั้งหมดหากมีหนึ่ง
แน่นอนคุณยังสามารถกำหนดคำสั่งที่กำหนดเอง:
(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))))
คำสั่งนี้จะค้นหาจากจุดเริ่มต้นของบัฟเฟอร์เสมอดังนั้นจุดสามารถอยู่หลังbegin
/ foo
/ end
เมื่อคุณเรียกใช้
ตั้งค่าการเชื่อมโยงคีย์ผ่าน:
(global-set-key (kbd "C-c r") 'replace-from-to)