คำถามติดแท็ก global-command

6
ลบรายการที่ซ้ำกันทั้งหมด
ฉันมีไฟล์ที่มีลักษณะเช่นนี้ Move to 230.00 Hold Hold Hold Hold Hold Hold Move to 00.00 Hold Hold Hold Hold Hold FooBar Hold Spam Hold ฉันอยากให้มันเป็นแบบนี้: Move to 230.00 Hold Move to 00.00 Hold FooBar Hold Spam Hold ฉันแน่ใจว่าจะต้องมีวิธีที่เป็นกลุ่มได้อย่างรวดเร็วสามารถทำเช่นนี้ แต่ฉันไม่สามารถห่อหัวของฉันได้อย่างไร สิ่งนี้เกินความสามารถของมาโครและต้องการ vimscript ไหม? นอกจากนี้ยังตกลงถ้าฉันต้องใช้แมโครเดียวกันกับแต่ละบล็อกของ "การพัก" ไม่จำเป็นต้องเป็นแมโครเดียวที่ได้รับทั้งไฟล์แม้ว่ามันจะยอดเยี่ยม

2
วิธีการเข้าร่วมทุกบรรทัดด้วยกันซึ่งเป็นรูปแบบการจับคู่?
ฉันต้องการรวมสายเข้าด้วยกันเฉพาะสำหรับบรรทัดที่มีรูปแบบบางอย่าง (เช่น;) อย่างไรก็ตามเมื่อใช้g/;/jมันจะไม่ทำงานอย่างที่คาดไว้เว้นแต่จะเรียกว่าสองครั้ง ตัวอย่างเช่นเนื้อหาต่อไปนี้: a 1; 2; 3; 4; 5; b 6; 7; 8; 9; c เมื่อใช้: :g/;/jผลลัพธ์คือ: a 1; 2; 3; 4; 5; b 6; 7; 8; 9; c หรือ:g/;/-jให้: a 1; 2; 3; 4; 5; b 6; 7; 8; 9; c คล้ายกับ: :g/;\_.\{-};/j. ผลลัพธ์ที่คาดหวังของฉันคือ: a 1; 2; 3; …

5
จะแทนที่เนื้อหาระหว่างสองรูปแบบจากไฟล์ได้อย่างไร
ฉันเป็นรูปแบบของไฟล์ต่อไปนี้: <common> fitnes=0 genetic=1 method=0 </common> <inputs> foo=bar bar=foo </inputs> <limits> balance=200.00 </limits> และฉันต้องการที่จะลบทุกสิ่งที่อยู่ระหว่าง<inputs>และ</inputs>(ยกเว้นรูปแบบด้วยตนเอง) และแทนที่ด้วยเนื้อหาจากไฟล์อื่น (เช่นfoo.txt) กล่าวอีกนัยหนึ่งด้วยfoo=barและbar=fooจะถูกแทนที่ด้วยเนื้อหาอื่น อาจเป็นไปได้ว่าคล้ายกับวิธีที่คุณลบการแข่งขันหลายบรรทัดเช่น: :g/<inputs/,/inputs>/d แต่ฉันไม่แน่ใจในสิ่งที่ฉันควรแทนที่dเพื่อแทรกเนื้อหาของไฟล์อื่น แต่ฉันต้องการเก็บรูปแบบการจับคู่ไว้ วิธีที่คล้ายกันคือการลบเนื้อหาภายในของแท็ก htmlเช่น :/<inputs>/norm vitd แต่ฉันไม่รู้ว่าคุณจะเพิ่มเนื้อหาลงในไฟล์ได้อย่างไร เป็นการดีที่ฉันพยายามที่จะหาหนึ่งซับเพราะมันจะเป็นส่วนหนึ่งของสคริปต์อื่น ฉันจะบรรลุสิ่งนั้นได้อย่างไร
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.