كيفية الحصول على قائمة بالملفات التي يتم نشرها حاليًا في VIM

StackOverflow https://stackoverflow.com/questions/2486420

  •  21-09-2019
  •  | 
  •  

سؤال

أنا أكتب مكونًا إضافيًا في VIM أحتاج إلى تحديد كل تلك الملفات التي يتم نشرها حاليًا. هذا هو الذي من أجله diff تم تعيينه. لقد مررت بالدليل ولكني لم أجد الكثير.

هل من الممكن القيام بذلك.

هذا السؤال مرتبط بالفعل بالسؤال كيفية اكتشاف الموضع في الرياح. في هذا السؤال ، كنت أحاول الحصول على موقف النافذة ، وذلك لاكتشاف أي من الاختلافات هو الشخص الصحيح والتي تركت واحدة. ال المحلول حصلت على استخدام winnr ()

لا يمكن أن يعمل هذا الحل إلا إذا كان هناك نوافذان فقط (تلك التي يتم نشرها). أريد أن أجعلها عامة ، حتى لو كانت نوافذ متعددة مفتوحة في VIM ، يمكنني تحديد أي واحد على اليسار وأي واحد هو الصحيح. هذا ما كنت أفكر في حل المشكلة

  1. احصل على قائمة بجميع المخازن المؤقتة المدرجة
  2. لكل من هذه المخازن المؤقتة تحدد ما إذا diff هو 1 من أجل هذا
  3. إذا diff هو 1 استعمال bufwinnr() للحصول على رقم نافذة.
  4. من أرقام النافذة ، تحدد أي واحد متبقي وأي واحد هو الصحيح. اليسار سيكون رقم نافذة أصغر
  5. ثم حدد ما إذا كان المخزن المؤقت الحالي (في أي alt-leftيتم ضغط `alt-right`) على اليسار أو اليمين باستخدام Winnr من المخزن المؤقت الحالي.

الآن القطع المفقودة هي 1 و 2. يمكن استخدام 1 LS ولكن أحتاج إلى تحليل ناتجها. هل هناك طريقة مستقيمة للحصول على قائمة بجميع المخازن المؤقتة المدرجة. ثم هل هناك طريقة للتحقق مما إذا كان هذا المخزن المؤقت diff هو 1 أم لا.

أي اقتراحات لحل أبسط موضع تقدير أيضًا.

هل كانت مفيدة؟

المحلول

  1. دورة من خلال جميع أرقام المخزن المؤقت الممكنة من 0 إلى bufnr('$') والتحقق ، ما إذا كان هذا المخزن المؤقت موجودًا باستخدام bufexists(nr).
  2. احفظ رقم المخزن المؤقت الحالي باستخدام let curbuf=bufnr('%').
  3. لكل مخزن مؤقت موجود execute "buffer ".bufnumber وتحقق &diff عامل. تذكر رقمين ، لكن لا تحقق bufwinnr().
  4. يفعل execute "buffer ".curbuf.
  5. اتصل أخيرًا bufwinnr(nr) لعدد من الأرقام الموجودة في الخطوة 3.

تحديث: حل آخر

let g:wlist={"0": [], "1":[]}
windo call add(g:wlist[&diff], bufnr('%'))
let g:diffbuffers=g:wlist.1
" here you have list of buffers with &diff option set in g:diffbuffers
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top