Как создать отдельный список буферов для каждой вкладки в Vim? - PullRequest
4 голосов
/ 22 февраля 2010

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

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

  • FiLea
  • FILEB
  • FileC

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

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

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

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

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

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

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

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

Есть ли обходной путь для достижения этой цели?

1 Ответ

5 голосов
/ 22 февраля 2010

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