سؤال كيفية حذف جميع الخطوط التي لا تحتوي على كلمة معينة في Vim؟


في vim يمكنني حذف جميع الأسطر التي تحتوي على كلمة "سعر" مع هذا

:g /price/d

كيف يمكنني حذف جميع الأسطر التي لا تحتوي على كلمة "سعر"؟


90
2018-03-31 23:00


الأصل


هل يمكن ترحيل هذا السؤال إلى vi.stackexchange.com؟ حاولت أن أذكر ذلك للهجرة لكني لم أستطع معرفة ذلك. - Mu Mind
MuMind حول الموضوع هنا ، لذلك لا داعي للهجرة. "لا تهاجر من أجل الهجرة. نحن نهاجر فقط الأسئلة لأنها كذلك خارج الموضوع على الموقع الأصلي. من الممكن تمامًا أن يكون السؤال موضوعًا على مواقع متعددة ، ولكن هذا ليس سببًا لترحيله في مكان آخر ، ما لم يطلب برنامج التشغيل الترحيل. "أيضًا ، يمكن لموظفي SE فقط ترحيلهم بعد 60 يومًا ومن النادر جدًا سوف (حتى لا يمكن للمشرفين ترحيل سؤال قديم). - 8bittree


الأجوبة:


يمكنك استخدام

:%g!/price/d

لحذف كل سطر لا يحتوي على "سعر"


127
2018-03-31 23:09



كنت أعلم أنه سيكون من السهل ... - digitaljoel
:g! يُعرف أيضًا باسم :v (أقرب إلى grep -v). - Chris Johnsen
ماذا يكون ال % فعل؟ - hippietrail
% هو نطاق خاص في هذا السياق يعني الملف بأكمله. نرى :help cmdline-ranges. - Heptite


تستطيع ايضا استخذام:

:v/price/d

لحذف الخطوط.


13
2017-10-07 08:03





%!grep "price"

هو خيار آخر يمكن أن يكون أسرع بكثير من :v للملفات الكبيرة.

اختبارها على Vim 7.4 ، أوبونتو 14.04 ، ملف سجل خط 1M.

الخطوط التي تحتوي على كلمة: https://stackoverflow.com/questions/1725265/how-can-i-delete-all-lines-that-do-not-begin-with-certain-characters/42714334#42714334


3
2018-03-10 09:02