5

是否可以将缓冲区列表“附加”到 Vim 中的特定选项卡?我目前正在使用MiniBufferExplorer,它在漂亮的选项卡中显示所有缓冲区。它可以使用标准的 vim 选项卡组合,但插件的缓冲区列表包含所有缓冲区,使用选项卡变得有点没用。这是我想要的一个例子:

选项卡 A 包含以下缓冲区列表:

  • 文件A
  • 文件B
  • 文件C

选项卡 B 包含以下缓冲区列表:

  • 档案D
  • 文件E
  • 文件F

目前我所拥有的是:

选项卡 A 包含一个缓冲区列表

  • 文件A
  • 文件B
  • 文件C
  • 档案D
  • 文件E
  • 文件F

选项卡 B 包含以下缓冲区列表:

  • 文件A
  • 文件B
  • 文件C
  • 档案D
  • 文件E
  • 文件F

当谈到“缓冲区列表”时,我指的是列出 minibuffer 插件提供的选项卡。

任何解决方法来实现这一点?

4

1 回答 1

5

我想不出任何基于 Tab 的缓冲区浏览器,但 vimscript 有很多函数可以跟踪缓冲区 (:he function-list) 。我只是把它搞砸了。它可能会让你得到你想要的。它只是跟踪 vim 字典中的选项卡。您需要充实 :TabExplorer 函数或将过滤后的列表(即 g:TabExplorer[tabpagenr()])修补到 minibuf 插件中

将它保存为 ~/.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()
于 2010-02-22T02:45:55.327 回答