7 years ago
The tabline can display arbitrary information using the same syntax used to customize the status line. Use that space for displaying additional information! For example, I like to show the current working directory in the right side of the tabline. This is achieved with the snippet below.
The MyTabLabel()
is used to draw a single label (tab number followed by the current buffer's name—feel free to tweak it as you prefer).
The MyTabLine()
function is just a syntactic variation of the function found in :h setting-tabline
, with an added variable for customization (g:my_tabline
). See :h 'statusline'
for the syntax.
Note: the snippet requires Vim compiled with +lambda
.
" Set the content of the right side of the tabline: let g:my_tabline = '⌘ %<%{getcwd()}' " Do not need to change below this line fun! MyTabLabel(nr) return ' ' . a:nr . ' ' . (get(extend(t:, { \ 'tablabel': fnamemodify(bufname(tabpagebuflist(a:nr)[tabpagewinnr(a:nr) - 1]), ':t') \ }), 'tablabel') == '' ? '[No Name]' : get(t:, 'tablabel')) endf fun! MyTabLine() return join(map(range(1, tabpagenr('$')), \ { _,i -> '%#TabLine' . (i == tabpagenr() ? 'Sel#' : '#') .'%'.i.'T %{MyTabLabel('.i.')}' } \ )) \ . '%#TabLineFill#%T%=' . g:my_tabline . ' ' . (tabpagenr('$') > 1 ? '%999X✕ ' : '') endf set tabline=%!MyTabLine() set showtabline=2 " Always show the tab bar