How to have a different buffer list for each tabs in Vim?

自古美人都是妖i 提交于 2019-12-09 06:52:29

问题


Is it possible to kind of "attach" a list of buffers to particular tabs within Vim? I am currently using MiniBufferExplorer, which shows all buffers in nice tabs. It can be combined using standard vim tabs but the plugin's buffer list contains all the buffers and using tabs become a bit useless. Here's an example of what I'd like:

Tab A contains a buffer list of:

  • FileA
  • FileB
  • FileC

Tab B contains a buffer list of:

  • FileD
  • FileE
  • FileF

Currently what I have is this:

Tab A contains a buffer list of

  • FileA
  • FileB
  • FileC
  • FileD
  • FileE
  • FileF

Tab B contains a buffer list of:

  • FileA
  • FileB
  • FileC
  • FileD
  • FileE
  • FileF

When speaking about "buffer list" I mean the tab listing the minibuffer plugin gives.

Any workaround to achieve this?


回答1:


I cant think of any Tab based buffer explorers out there but vimscript has got plenty of functions to track of buffers (:he function-list) . I just knocked this up for the hell of it. It might get you to what you want . It just keeps track of tabs in a vim dictionary. You will need to flesh out the :TabExplorer function or patch the filtered list (ie. g:TabExplorer[tabpagenr()]) into the minibuf plugin

Save it as ~/.vim/plugin/tabexplorer.vim and source it at startup.

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()


来源:https://stackoverflow.com/questions/2308278/how-to-have-a-different-buffer-list-for-each-tabs-in-vim

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!