คุณจะค้นหา 2d เป็นกลุ่มได้อย่างไร?


4

ฉันกำลังมองหาเส้นในไฟล์ที่ตรงกับรูปแบบ 2 มิติ

ตัวอย่างเช่นกำหนดไฟล์อินพุตต่อไปนี้:

aaaba
aabaa
aaaba
aaaaa
aaaaa

ฉันต้องการใช้รูปแบบเช่น

ab
ba
ab

เพื่อให้ตรงกับ 3 บรรทัดแรก เป็นการดีที่ฉันต้องการให้สามารถแทนที่ด้วยรูปแบบนั้นตัวอย่างเช่นแทนที่ด้วย

ba
ab
ba

คำตอบ:


3

สิ่งนี้ไม่สามารถทำได้ผ่านการแสดงออกปกติเพียงอย่างเดียว คุณต้องการอะตอมพิเศษที่ทำงานเหมือน กลุ่มจับภาพ แต่แทนที่จะรวบรวมคอลัมน์จากนั้นอะตอมที่สอดคล้องกันเพื่อเรียกคืน ดีที่สุดที่คุณสามารถทำได้คือจับคู่แต่ละแถวในบรรทัดถัดไปสำหรับตัวอย่างของคุณ

/ab\ze.*\n.*ba.*\n.*ab/

ด้วยสิ่งนั้นไม่ใช่เพียงแค่เส้นที่ตรงกับเส้นของบล็อกด้วยตัวเองเท่านั้น แต่เกิดขึ้นทั้งหมดที่มีข้อความของบล็อกแม้ว่าจะไม่ใช่แค่การจัดแนวแนวตั้งเดียวกันและเน้นเฉพาะการจับคู่ของบรรทัดแรกเท่านั้น ของฉัน ค้นหาปลั๊กอินไฮไลต์ ให้ฟังก์ชั่นนี้ (แมปไปที่ {Visual}* ) เช่นกัน

หากไม่เพียงพอ (คุณสามารถใช้ /c ติดธง :substitute หากต้องการตรวจสอบและรับทราบการแข่งขันแต่ละครั้งด้วยตนเอง) คุณต้องสร้างโครงสร้างพื้นฐานการค้นหา (และทดแทน) ของคุณเองซึ่งเทียบเท่ากับ /, n / Nและ :sและยืนยันเพิ่มเติมสำหรับการจัดแนวบล็อกใน Vimscript

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