set showtabline=2 " 各タブページのカレントバッファ名+αを表示 function! s:tabpage_label(n) " t:title と言う変数があったらそれを使う let title = gettabvar(a:n, 'title') if title !=# '' return '%N:' . title endif " タブページ内のバッファのリスト let bufnrs = tabpagebuflist(a:n) " カレントタブページかどうかでハイライトを切り替える let hi = a:n is tabpagenr() ? '%#TabLineSel#' : '%#TabLine#' " バッファ番号 let no = a:n . ':' " タブページ内に変更ありのバッファがあったら '+' を付ける let mod = len(filter(copy(bufnrs), 'getbufvar(v:val, "&modified")')) ? '+' : '' let sp = (no . mod) ==# '' ? '' : ' ' " 隙間空ける " カレントバッファ let curbufnr = bufnrs[tabpagewinnr(a:n) - 1] " tabpagewinnr() は 1 origin let fname = pathshorten(bufname(curbufnr)) let label = no . mod . sp . fname return '%' . a:n . 'T' . hi . label . '%T%#TabLineFill#' endfunction function! MakeTabLine() let titles = map(range(1, tabpagenr('$')), 's:tabpage_label(v:val)') let sep = '|' " タブ間の区切り let tabpages = join(titles, sep) . sep . '%#TabLineFill#%T' let info = fnamemodify(getcwd(), ":~") . ' ' return tabpages . '%=[' . info . ']' " タブリストを左に、情報を右に表示 endfunction set tabline=%!MakeTabLine()