วิธีแก้ปัญหาที่ง่ายที่สุด: ใช้ciW
เพื่อเลือกคำที่คั่นด้วยช่องว่าง
ปัญหาที่ใหญ่กว่าจะทำอย่างไรกับค่าของ_
ตัวละครในตารางไวยากรณ์ ปัญหาคือ_
โดยค่าเริ่มต้นองค์ประกอบสัญลักษณ์ในตารางไวยากรณ์และคุณต้องการที่จะถือเป็นองค์ประกอบคำ
หากคุณใช้ emacs 24.4 คุณสามารถลองเปิดใช้งานsuperword-mode
ได้ ฉันไม่ได้ลองด้วยตัวเองดังนั้นไมล์สะสมของคุณอาจแตกต่างกันไป
อีกทางเลือกหนึ่งคือการปรับเปลี่ยนตารางไวยากรณ์ด้วยตัวเองและบอก Emacs ที่คุณต้องการให้มันปฏิบัติต่อ_
ตัวละครในรูปแบบของคำเช่น:
(modify-syntax-entry ?_ "w")
หลังจากที่คุณทำอย่างนั้นciw
ทำงานได้ตามที่คุณต้องการให้ดังกล่าวว่าจะเลือกทั้งหมดมากกว่าแค่abc_def_ghi
def
อย่างไรก็ตามการทำเช่นนี้อาจเกินความสามารถโดยเฉพาะอย่างยิ่งหากคุณต้องการ_
ให้นับเป็นส่วนหนึ่งของคำสำหรับวัตถุข้อความ คุณสามารถให้คำแนะนำevil-inner-word
ดังนี้:
(defadvice evil-inner-word (around underscore-as-word activate)
(let ((table (copy-syntax-table (syntax-table))))
(modify-syntax-entry ?_ "w" table)
(with-syntax-table table
ad-do-it)))
ตอนนี้_
ยังคงเป็นองค์ประกอบที่เป็นสัญลักษณ์สำหรับทุกอย่างยกเว้นวัตถุข้อความคำภายในดังนั้นciw
จะทำสิ่งที่คุณต้องการโดยไม่ต้องสัมผัสการทำงานของสิ่งอื่นใด
คุณสามารถอ่านเพิ่มเติมเกี่ยวกับการปรับเปลี่ยนตารางไวยากรณ์ในโหนด EmacsWiki
w
,aw
ฯลฯ ) คุณสามารถทำเช่นเดียวกันกับฟังก์ชั่นดังต่อไปนี้มากเกินไป:evil-forward-word-begin
,evil-forward-word-end
,evil-backward-word-begin
,evil-backward-word-end
, ,evil-a-word
evil-inner-word
หมายเหตุ: คุณต้องเปลี่ยนunderscore-as-word
เป็นค่าที่ไม่ซ้ำกัน (โดยพล)