การแทนที่การแสดงออกปกติกรณีผสมในกลุ่ม


9

ฉันมักจะเจอสถานการณ์ที่ฉันมีไฟล์ที่มีตัวพิมพ์จำนวนมาก ตัวอย่างเช่น,

CamelCase and camelCase

ฉันกำลังมองหาตัวแทนนิพจน์ปกติที่จะผลิต

AnotherCase and anotherCase

ตอนนี้ฉันทำได้สองขั้นตอนหลังจากเลือกเส้นสายตา

:s/CamelCase/AnotherCase/g
:s/camelCase/anotherCase/g

เป็นไปได้ในการเปลี่ยนขั้นตอนเดียวหรือฉันควรดูตัวเลือกอื่น ๆ เช่นฟังก์ชั่น.vimrcหรือไม่

คำตอบ:


7

ฉันขอแนะนำให้ใช้:Subvertผ่านAbolish.vimของ Tim Pope

:%S/camelCase/anotherCase/g

ตอนVimcasts : การแทนที่ด้วย Supercharged ด้วย: Subvert


ปลั๊กอินนี้ทำให้ง่ายมาก ฉันไม่ได้ดูใต้กระโปรงหน้ารถ แต่คิดว่าฉันจะลองทำ:%S/CamelCase/AnotherCase/gแต่มันจะเข้ามาแทนที่CamelCaseและทิ้งไว้camelCaseตามที่เป็น ไม่มีเรื่องใหญ่อะไรที่ควรจดจำ
wsams

เป็นไปได้ว่าการใช้ smartcase หรืออะไรบางอย่างกับเอฟเฟกต์นั้นเพื่อให้ตัวอักษรตัวพิมพ์ใหญ่ใด ๆ จำเป็นต้องเป็นตัวพิมพ์ใหญ่ แต่ตัวพิมพ์เล็กสามารถใช้ตัวพิมพ์ใหญ่ได้ตามความจำเป็น
dash-tom-bang

3

นอกจากนี้คุณยังมีความเคารพkeepcase

กับ

:SubstituteCase#\ctoto\(Titi\)tata#\1Tutu#g

คุณจะได้รับ:

 totoTitiTata -> titiTutu
 TotoTitiTata -> TitiTutu
 tototititata -> tititutu
 tototitiTata -> titiTutu
 TototitiTata -> TitiTutu 
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.