ทางเลือกเพื่อหลบหลีกการทับในการค้นหาและแทนที่สตริงที่มีความยาว


10

มีทางเลือกอื่นใดในการค้นหาเป็นกลุ่มและแทนที่สตริง, แทนที่จะต้องหลีกหนีทุกอักขระพิเศษในสตริง

ตัวอย่างเช่นหากฉันต้องการจับคู่สตริงต่อไปนี้และแทนที่ด้วยบางสิ่ง

[ERROR] Login unsucessful

ถ้าอย่างนั้นฉันต้องทำ

:%s/\[ERROR\]\ Login\ unsucessful/something/g

และมันก็น่าเกลียดและเจ็บปวดมากขึ้นสำหรับสตริงที่ซับซ้อนที่มีอักขระพิเศษจำนวนมาก

ฉันต้องการทำบางสิ่งเช่น

:%s/"[ERROR] Login unsucessful"/something/g

ซึ่งจะหลีกเลี่ยงการหลบหนีทั้งหมด มีคุณสมบัติเช่นนี้หรือไม่?

คำตอบ:


16

คุณสามารถใช้very-nomagicสวิตช์ ดู:h \Vรายละเอียดที่ %s/\V[ERROR] Login unsuccessful/something/gนี้จะให้คุณ นอกจากนี้ยังมีnomagicสวิตช์\Mซึ่งเป็นรุ่นที่เบากว่า\Vและดูเหมือนจะไม่ได้ใช้อย่างกว้างขวาง

นอกจากนี้โปรดทราบว่าคุณไม่จำเป็นต้องหลบหนีช่องว่างเช่นเดียวกับในตัวอย่างแม้ว่าจะไม่ได้ใช้\Vก็ตาม


ขอบคุณ สิ่งที่ฉันต้องการ ไม่ได้รับสิ่งนี้ในการค้นหา google ของฉันไม่ได้เพราะอะไร
MohitC

2
@MohitC ฉันแผนที่/เพื่อ/\vเปิดใช้งาน "มากวิเศษ" สำหรับการค้นหาส่วนใหญ่ดังนั้นฉันได้แมป//ไป/เพื่อเริ่มการค้นหาที่ไม่ได้แก้ไข (มีประโยชน์สำหรับการค้นหาประวัติการค้นหาโดยไม่ใช้ตัวแก้ไข) และ/v/เพื่อ/\Vปิดเวทมนตร์ทั้งหมดสำหรับการค้นหาอย่างรวดเร็ว
Kyle Strand

@MohitC ในความเป็นจริงการตั้งค่าของฉันมีความซับซ้อนมากกว่านั้นเพราะฉันยังใช้ปลั๊กอินเพื่อใช้ "เวทมนต์มาก" อย่างสม่ำเสมอที่สุดเท่าที่จะทำได้ในบริบททั้งหมด ดูคำตอบของฉันที่นี่
Kyle Strand

7

คุณไม่จำเป็นต้องหลบหนีจากช่องว่าง ดังนั้นนี่คือ:

:%s/\[ERROR\]\ Login\ unsucessful/something/g

ควรเป็น:

:%s/\[ERROR\] Login unsucessful/something/g

และแน่นอนคุณสามารถเปิดใช้งาน"โหมด" ที่น่าจับตามองเพื่อทำให้ตัวละครพิเศษเหล่านั้นพิเศษน้อยลง:

:%s/\V[ERROR] Login unsucessful/something/g

:help /magicดู


2

นอกเหนือจากการตั้งค่าสถานะnomagicกล่าวถึงในคำตอบอื่น ๆ

บ่อยครั้งที่คุณไม่จำเป็นต้องแม่นยำในสตริงการค้นหาของคุณ

ตัวอย่างเช่นเพื่อให้ตรงกับ

[ERROR] Login unsucessful

คุณสามารถใช้การแสดงออก

.ERROR. Login unsucessful

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

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