Vim でバッファ番号から開かれているタブ番号を取得する

某所で少し話が出てたので書いてみた。

[ソース]

function! GetBufnr2Tabnr(bufnr)
    let result = []
    for tabnr in range(1, tabpagenr("$"))
        for bufnr in tabpagebuflist(tabnr)
            if bufnr == a:bufnr
                call add(result, tabnr)
            endif
        endfor
    endfor
    return result
endfunction

" example
" バッファ3が開いているタブ番号は [2, 3, 3, 4]
echo GetBufnr2Tabnr(3)
" => [2, 3, 3, 4]


tabpagebuflist() でタブで開かれているバッファ番号が取得できるのでそれを利用しています。