كيف يكون لديك قائمة عازلة مختلفة لكل علامات تبويب في VIM؟
-
22-09-2019 - |
سؤال
هل من الممكن أن يكون نوعًا من "إرفاق" قائمة من المخازن المؤقتة إلى علامات تبويب معينة داخل VIM؟ أنا أستخدم حاليًا minibufferexplorer, ، والذي يظهر جميع المخازن المؤقتة في علامات التبويب الجميلة. يمكن دمجها باستخدام علامات تبويب VIM القياسية ولكن قائمة المخزن المؤقت للمكون الإضافي تحتوي على جميع المخازن المؤقتة واستخدام علامات التبويب تصبح غير مجدية قليلاً. إليك مثال على ما أود:
تحتوي علامة التبويب A على قائمة عازلة من:
- ملف
- fileb
- Filec
يحتوي Tab B على قائمة مخزن المؤقت:
- قدم
- ملف
- filef
حاليا ما لدي هذا:
تحتوي علامة التبويب A على قائمة مخزن مؤقت
- ملف
- fileb
- Filec
- قدم
- ملف
- filef
يحتوي Tab B على قائمة مخزن المؤقت:
- ملف
- fileb
- Filec
- قدم
- ملف
- filef
عند الحديث عن "قائمة المخزن المؤقت" ، أعني أن علامة التبويب تسرد المكون الإضافي MiniBuffer يعطيه.
أي حل بديل لتحقيق ذلك؟
المحلول
لا أستطيع التفكير في أي مستكشفين مخزن المؤقت القائم على علامات التبويب ، لكن Vimscript لديها الكثير من الوظائف لتتبع المخازن المؤقتة (: هو قائمة الوظائف). أنا فقط طرقت هذا من أجل الجحيم منه. قد تنقلك إلى ما تريد. إنه يتبع فقط علامات التبويب في قاموس VIM. ستحتاج إلى تجسيد وظيفة: tabexplorer أو تصحيح القائمة التي تمت تصفيتها (أي. g: tabexplorer [tabpagenr ()])
احفظه كـ ~/.vim/plugin/tabexplorer.vim ومصدره عند بدء التشغيل.
let g:TabExplorer = {}
func! StoreBufTab()
if !has_key(g:TabExplorer, tabpagenr())
let g:TabExplorer[tabpagenr()] = []
endif
if index(g:TabExplorer[tabpagenr()], bufname("%")) == -1 && bufname("%") != ""
call add (g:TabExplorer[tabpagenr()],bufname("%"))
endif
endfunc
func! DisplayTabExplorer()
4split
enew
call append(".",g:TabExplorer[tabpagenr()])
endfunc
au BufEnter * call StoreBufTab()
command! TabExplorer call DisplayTabExplorer()