Kim Schulz wrote:
hi is there an equivalent to bufexists() and bufnr() but for tabs in vim
7?

There is no need for an "equivalent". bufexists() and bufnr() will show that a buffer exists, and give its number, even if it is not currently loaded in a window; indeed even if it is "unlisted" i.e., listed by ":ls!" (with bang) but not by ":ls" (without bang). After ":bdelete" (but not after ":bwipeout") bufexists() is still TRUE for the just "deleted" buffer.

bufloaded() will answer TRUE if a buffer is loaded in a window, but also if it is loaded in memory but hidden (not loaded in any window).

To see if a buffer is loaded in a window, use
        if bufwinnr('/path/to/filename.ext') != -1

To see if a buffer is loaded in a window in the n-th tab page:

function! BufferTabWindow(tab, bufid)
  let bufno = bufnr(a:bufid)
  let i = 1
  while i <= tabpagewinnr(a:tab, '$')
    if tabpagebuflist(a:tab, i-1) == bufno
      return i
    endif
    i += 1
  endwhile
endfunction

which (if I didn't goof) should return 0 if the buffer is not loaded in the tab in question, and the window number (a non-zero number) if it is. If the buffer in question is loaded in more than one window in the concerned tab, the number of the first of those windows should be returned.


Best regards,
Tony.

Reply via email to