วิธีแก้ปัญหาที่ง่ายที่สุด: ใช้ciWเพื่อเลือกคำที่คั่นด้วยช่องว่าง
ปัญหาที่ใหญ่กว่าจะทำอย่างไรกับค่าของ_ตัวละครในตารางไวยากรณ์ ปัญหาคือ_โดยค่าเริ่มต้นองค์ประกอบสัญลักษณ์ในตารางไวยากรณ์และคุณต้องการที่จะถือเป็นองค์ประกอบคำ
หากคุณใช้ emacs 24.4 คุณสามารถลองเปิดใช้งานsuperword-modeได้ ฉันไม่ได้ลองด้วยตัวเองดังนั้นไมล์สะสมของคุณอาจแตกต่างกันไป
อีกทางเลือกหนึ่งคือการปรับเปลี่ยนตารางไวยากรณ์ด้วยตัวเองและบอก Emacs ที่คุณต้องการให้มันปฏิบัติต่อ_ตัวละครในรูปแบบของคำเช่น:
(modify-syntax-entry ?_ "w")
หลังจากที่คุณทำอย่างนั้นciwทำงานได้ตามที่คุณต้องการให้ดังกล่าวว่าจะเลือกทั้งหมดมากกว่าแค่abc_def_ghidef
อย่างไรก็ตามการทำเช่นนี้อาจเกินความสามารถโดยเฉพาะอย่างยิ่งหากคุณต้องการ_ให้นับเป็นส่วนหนึ่งของคำสำหรับวัตถุข้อความ คุณสามารถให้คำแนะนำ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-wordevil-inner-wordหมายเหตุ: คุณต้องเปลี่ยนunderscore-as-wordเป็นค่าที่ไม่ซ้ำกัน (โดยพล)