Как создать отдельный список буферов для каждой вкладки в Vim?

Можно ли как-то "прикрепить" список буферов к конкретным вкладкам в Vim? В настоящее время я использую MiniBufferExplorer, который показывает все буферы в хороших вкладках. Его можно комбинировать, используя стандартные вкладки vim, но список буферов плагина содержит все буферы, и использование вкладок становится немного бесполезным. Вот пример того, что я хотел бы:

Вкладка A содержит список буферов:

  • FiLea
  • FILEB
  • FileC

Вкладка B содержит список буферов:

  • Поданный
  • FileE
  • FileF

В настоящее время у меня есть это:

Вкладка A содержит список буферов

  • FiLea
  • FILEB
  • FileC
  • Поданный
  • FileE
  • FileF

Вкладка B содержит список буферов:

  • FiLea
  • FILEB
  • FileC
  • Поданный
  • FileE
  • FileF

Говоря о "списке буферов", я имею в виду вкладку со списком, которую предоставляет плагин минибуфера.

Любое решение для достижения этой цели?

1 ответ

Решение

Я не могу вспомнить ни одного исследователя буфера, основанного на Tab, но 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()
Другие вопросы по тегам