自动关闭缓冲区占用Vim';在预览窗口中打开新缓冲区时,单击“预览”窗口

自动关闭缓冲区占用Vim';在预览窗口中打开新缓冲区时,单击“预览”窗口,vim,unite.vim,Vim,Unite.vim,我经常在Vim中滚动文件列表。有时,我使用Unite的自动预览功能在预览窗口中打开每个文件,同时滚动浏览。如果我滚动浏览大量文件,就会留下一堆不需要的打开缓冲区。在预览窗口中打开新缓冲区时,如何关闭当前占用预览窗口的缓冲区?我可以通过查看Unite源代码、复制预览函数并直接对此函数进行修改以垂直打开预览窗口来解决此问题: function! s:preview.func(candidate) let buflisted = buflisted( \ unite#util#es

我经常在Vim中滚动文件列表。有时,我使用Unite的
自动预览
功能在预览窗口中打开每个文件,同时滚动浏览。如果我滚动浏览大量文件,就会留下一堆不需要的打开缓冲区。在预览窗口中打开新缓冲区时,如何关闭当前占用预览窗口的缓冲区?

我可以通过查看Unite源代码、复制预览函数并直接对此函数进行修改以垂直打开预览窗口来解决此问题:

function! s:preview.func(candidate)
  let buflisted = buflisted(
        \ unite#util#escape_file_searching(
        \ a:candidate.action__path))
  if filereadable(a:candidate.action__path)
    " If execute this command, unite.vim will be affected by events.
    noautocmd silent execute 'vert pedit!'  " added vert
          \ fnameescape(a:candidate.action__path)
    call SetWidthToHalfScreen()  " added to resize preview window
    let prev_winnr = winnr('#')
    let winnr = winnr()
    wincmd P
    doautoall BufRead
    setlocal nomodified
    execute prev_winnr.'wincmd w'
    execute winnr.'wincmd w'
  endif
  if !buflisted
    call unite#add_previewed_buffer_list(
        \ bufnr(unite#util#escape_file_searching(
        \       a:candidate.action__path)))
  endif
endfunction
call unite#custom#action("openable", "preview", s:preview)
call unite#custom#action("file", "preview", s:preview)

function! SetWidthToHalfScreen()
  let diff = 100 - winwidth(winnr())
  exec "vert resize " . (diff > 0 ? '+' : '-') . abs(diff)
endfunction

这是一个严重的疏忽,应该在unite的问题跟踪器上报告给shougo。@Romaill我应该指定——我已经覆盖了unite的本机
预览
操作,以便控制预览窗口的位置,正如shougo建议的那样。本机预览操作没有此问题。当我发现缓冲区列表较大时,我通常只执行
:%bdel
:%bwipeout
或类似操作。尽管如此,我从未真正查看过缓冲区列表。我只是“召唤”我的档案做“buf abbrev”+