إخفاء جميع الخطوط المطابقة (غير) في Vim
سؤال
هل من الممكن إظهار/إخفاء جميع الأسطر المطابقة في vi أو Vim؟لا تسليط الضوء ولكن فقط تظهر تلك الخطوط فقط.
على سبيل المثال لدي نص مع كلمة الكلمة ERROR
.كيف أجعلها تظهر فقط الأسطر التي تحتوي على ERROR
وكيفية إظهار الخطوط فقط بدون ERROR
?
هل هناك حل دون حذف جميع الخطوط المطابقة ثم التراجع عنها؟
المحلول
هل تعلم شيئا عن الأمر :global
؟ هل هذا تفعل ما تريد؟
:g/ERROR
وعلى العكس:
:g!/Error
وأو مكافئ:
:v/Error
نصائح أخرى
هناك طريقة أخرى تعتمد على حالة الاستخدام الخاصة بك وهي الاستخدام vimgrep ونتائجه في إصلاح سريع.يمكنك القيام بما يلي:
:vimgrep pattern %
سيبحث في الملف الحالي وينقلك إلى نتيجة البحث الأولى.والأهم من ذلك أنه يضع النتائج أيضًا في "قائمة الإصلاح السريع".
:copen
سيفتح بعد ذلك قائمة الإصلاحات السريعة في نافذة إصلاح سريع منفصلة.لذلك سيكون لديك نافذة منفصلة بها جميع الأسطر من آخر vimgrep الخاص بك.داخل نافذة الإصلاح السريع، يمكنك بعد ذلك الضغط على Enter أو النقر نقرًا مزدوجًا على أحد السطر للانتقال إلى السطر المقابل في ملفك الأصلي.
:colder
سيسمح لك بالعودة إلى قوائم الإصلاح السريع الأقدم (نتائج vimgrep الأقدم).و :cnewer
يتقدم إلى نتائج البحث الأحدث.
لاحظ أنه يتم أيضًا تحديث قائمة الإصلاحات السريعة عند التشغيل :make
(ولهذا السبب يطلق عليه اسم الإصلاح السريع لإصلاح الأخطاء).وبسبب هذا، يوجد أيضًا بديل لقائمة الإصلاحات السريعة يسمى "قائمة المواقع".لاستخدامه بدلا من ذلك تستخدمه :lvimgrep
, ، ثم استخدم الأوامر التي تبدأ بـ l بدلاً من الأوامر التي تبدأ بـ c - :lopen
, :lolder
, :lnewer
.
هناك، بالطبع، الكثير الذي يمكنك القيام به.يرى :help quickfix
لمزيد من المعلومات.
ملحوظة: لقد قلت أنك لا تريد اتباع نهج يقوم بحذف الأسطر ثم التراجع عنها.ولكن منذ أن قمت بوضع علامة g/ERROR
كإجابة اعتقدت أنني سأشير إلى طريقة سريعة وقذرة وهي القيام بذلك g!/ERROR/d
.يمكنك بعد ذلك التراجع عنه بسهولة باستخدام u
.لمعلوماتك أيضًا، يمكنك القيام بذلك :set hlsearch
لتسليط الضوء على الأنماط المتطابقة :g
الأوامر.
ويمكنك استخدام
:g/ERROR/
وطباعة جميع الخطوط مع ERROR
وهناك أيضا البرنامج المساعد فيم الذي رأيته عدة مرات ولكن لم تستخدم: foldsearch: أضعاف بعيدا الأسطر التي لا تتطابق مع نمط معين
وأفضل طريقة للقيام بذلك هو ->
:vimgrep /something/g % | copen
وهذا سيفتح قائمة المباريات لكلمتك الرئيسية وأيضا سوف تظهر خطوط يضاهيه سوى في نافذة quickfix.
و:vimgrep /something/g % | copen
يعمل رهيبة. أيضا :g/<pattern>/d
يمكن استخدامها لحذف خطوط مع نمط
وربما كنت تعني القيادة في أقل السادس همة و/ نمط / مما يدل على خطوط تحتوي على / نمط / (مثل البقرى).
في حالة استخدامك fzf
يمكنك استخدام:
:Lines
في كافة الملفات المفتوحة:BLines
فقط في المخزن المؤقت المفتوح:Rg [pattern]
استخدامripgrep