วิธีการลบทุกบรรทัดที่ไม่มีคำบางคำในกลุ่ม?


116

ในกลุ่มฉันสามารถลบบรรทัดทั้งหมดที่มีคำว่า "price" ด้วยสิ่งนี้

:g /price/d

ฉันจะลบบรรทัดทั้งหมดที่ไม่มีคำว่า "ราคา" ได้อย่างไร


1
สามารถย้ายคำถามนี้ไปที่vi.stackexchange.com ได้หรือไม่ ฉันพยายามตั้งค่าสถานะเพื่อการโยกย้าย แต่ไม่สามารถคิดออกได้
Mu Mind

@MuMind มันอยู่ในหัวข้อที่นี่จึงไม่จำเป็นต้องย้าย " อย่าโยกย้ายเพื่อการโยกย้ายเราโอนย้ายคำถามเท่านั้นเนื่องจากอยู่นอกหัวข้อในไซต์ดั้งเดิมเป็นไปได้อย่างสมบูรณ์แบบที่คำถามจะอยู่ในหัวข้อในหลาย ๆ ไซต์ แต่นั่นไม่ใช่เหตุผลในการโยกย้าย ที่อื่นยกเว้นว่า OP ร้องขอการโยกย้าย " นอกจากนี้พนักงาน SE เท่านั้นที่สามารถย้ายหลังจาก 60 วันและหายากมากที่พวกเขาจะ (ไม่แม้แต่ผู้ดูแลสามารถโยกย้ายคำถามเก่า)
8bittree

คำตอบ:


157

คุณสามารถใช้ได้

:%g!/price/d

เพื่อลบทุกบรรทัดที่ไม่มี "ราคา"


3
ฉันรู้ว่ามันจะง่าย ...
digitaljoel

35
:g!เป็นที่รู้จักกันว่า:v(คล้ายกับgrep -v)
Chris Johnsen

3
อะไร%ทำอย่างไร
hippietrail

4
%เป็นช่วงพิเศษในบริบทนี้ซึ่งหมายถึงไฟล์ทั้งหมด :help cmdline-rangesดู
Heptite

1
%เป็นทางเลือกเนื่องจากช่วงเริ่มต้นคือบัฟเฟอร์ทั้งหมด
Stillanoob


4
%!grep "price"

เป็นอีกตัวเลือกหนึ่งที่สามารถเร็วกว่า:vไฟล์ขนาดใหญ่อย่างมาก

ทดสอบบน Vim 7.4, Ubuntu 14.04, ไฟล์บันทึกการทำงาน 1M

บรรทัดที่มีคำว่า: https://stackoverflow.com/questions/1725265/how-can-i-delete-all-lines-that-do-not-not-begin-with-certain-characters/42714334#42714334

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