taboverflow.vim deals with the problem that the current tab becomes invisible in the tabline when there are too many tabs. Users can fully customize it by implementing a label function.
Using vim-plug
Plug 'ipod825/taboverflow.vim'Implement g:TaboverflowLabel returning the string for each tab.
" This is the default implementation
function s:MyTabLabel(n)
let buflist = tabpagebuflist(a:n)
let winnr = tabpagewinnr(a:n)
let res = '%#Visual#'.taboverflow#unicode_num(a:n)
if a:n == tabpagenr()
let res .= '%#TabLineSel#'
else
let res .= '%#TabLine#'
endif
let bufnr = buflist[winnr - 1]
if getbufvar(bufnr, '&modified') == 1
let res .= '*'
endif
let bufname = fnamemodify(bufname(bufnr), ':t')
if empty(bufname)
let bufname = '[No Name]'
endif
let res .= bufname
return res
endfunction
let g:TaboverflowLabel = function('s:MyTabLabel')
" This mappings are for moving tabs arounbd.
nmap <c-m-h> <Plug>TabMovePrev
nmap <c-m-l> <Plug>TabMoveNext