TL; DR: erefactor-rename-symbol-in-buffer
คุณกำลังมองหาฟังก์ชั่นการเปลี่ยนชื่ออัจฉริยะศัพท์ - หนึ่งที่เปลี่ยนชื่อตัวแปรตามขอบเขตของพวกเขาไม่เพียง แต่เป็นใบ้ค้นหาและแทนที่ แพคเกจนี้มีอยู่ในหลายภาษา แต่เมื่อเขียน (เมษายน 2019) มีตัวเลือกไม่มากสำหรับ Emacs Lisp erefactor
แพคเกจเป็นเพียงคนเดียวที่ฉันรู้
erefactor-rename-symbol-in-buffer
เป็นฟังก์ชั่นที่คุณต้องการ มันเป็นคำสั่งค้นหาและแทนที่อัจฉริยะที่จะแทนที่สัญลักษณ์ในขอบเขตปัจจุบัน (รวมถึงเอกสาร) ข้อ จำกัด ของคำสั่งนี้คือจะไม่ค้นหานอกบัฟเฟอร์ปัจจุบัน มันฉลาด แต่ไม่สมบูรณ์แบบ มันจะขอให้คุณยืนยันการเกิดแต่ละครั้งเพื่อให้แน่ใจว่าผลลัพธ์ที่ได้คือสุขาภิบาล
ฟังก์ชั่นอื่น ๆ erefactor-rename-symbol-in-package
คือการเปลี่ยนชื่อ วิธีนี้ใช้ไม่ได้ผลเหมือนกัน - ใช้ได้กับสัญลักษณ์ทั่วโลกเท่านั้น ขึ้นอยู่กับแพคเกจของคุณที่ถูกตั้งค่าอย่างถูกต้องด้วยระบบการจัดกลุ่มและคำนำหน้าและต้องการตัวแปรเพื่อให้ตรงกับคำนำหน้าของแพ็คเกจ มันไม่ค่อยแข็งแกร่ง - มันจะล้มเหลวถ้าคุณไม่ได้ตั้งค่าตามที่ฟังก์ชั่นนี้คาดไว้ ฉันคิดว่าถ้าคุณเปลี่ยนชื่อสัญลักษณ์ระดับโลกคุณอาจใช้การค้นหาและแทนที่ที่ไร้เดียงสาเนื่องจากสัญลักษณ์ทั่วโลกใน Elisp ไม่มีเนมสเปซ ประโยชน์ของการเข้าใจคำศัพท์มีน้อย คำสั่งนี้บอบบางเกินไปสำหรับการแลกเปลี่ยน projectile-replace
ฉันขอแนะนำให้เพียงแค่ใช้
Erefactor มีคำสั่ง Elisp จำนวนมากที่คุณอาจพบว่ามีประโยชน์ (ไม่สมบูรณ์) รายการที่มีอยู่ในREADME
ไม่ได้อธิบายไว้ในหน้า GitHub แต่erefactor
มีใน MELPA ( M-x package-install RET erefactor
) หน้า MELPA สามารถพบได้ที่นี่