Proposed tip Please edit this page to improve it, or add your comments below (do not use the discussion page).
created November 30, 2009 · complexity basic · author Fritzophrenic · version 7.0
It can be hard to quickly determine the tab number you want when jumping to a specific tab by giving a count to the gt command. This makes it easier by displaying the tab page number at the beginning of the tab page text. Note, only works in gui Vim.
TO DO
- Tweak to use tablabel option for terminal Vim
- Lose the tooltip portion, adding a "see also" might be in order.
- Emphasize the specific portion that deals with adding the tab page number, possibly removing the rest of the script or moving it to a sub page. Would be best to duplicate the default tab page text in the tip proper and provide the alternative as a subpage (maybe a user subpage of User:Fritzophrenic).
Drop the following in your vimrc:
set showtabline=2 " always show tabs in gvim, but not vim " set up tab labels with tab number, buffer name, number of windows function! GuiTabLabel() let label = '' let bufnrlist = tabpagebuflist(v:lnum) " Add '+' if one of the buffers in the tab page is modified for bufnr in bufnrlist if getbufvar(bufnr, "&modified") let label = '+' break endif endfor " Append the tab number let label .= tabpagenr().': ' " Append the buffer name let name = bufname(bufnrlist[tabpagewinnr(v:lnum) - 1]) if name == '' " give a name to no-name documents if &buftype=='quickfix' let name = '[Quickfix List]' else let name = '[No Name]' endif else " get only the file name let name = fnamemodify(name,":t") endif let label .= name " Append the number of windows in the tab page let wincount = tabpagewinnr(v:lnum, '$') return label . ' [' . wincount . ']' endfunction " set up tab tooltips with every buffer name function! GuiTabToolTip() let tip = '' let bufnrlist = tabpagebuflist(v:lnum) for bufnr in bufnrlist " separate buffer entries if tip!='' let tip .= ' | ' endif " Add name of buffer let name=bufname(bufnr) if name == '' " give a name to no name documents if getbufvar(bufnr,'&buftype')=='quickfix' let name = '[Quickfix List]' else let name = '[No Name]' endif endif let tip.=name " add modified/modifiable flags if getbufvar(bufnr, "&modified") let tip .= ' [+]' endif if getbufvar(bufnr, "&modifiable")==0 let tip .= ' [-]' endif endfor return tip endfunction set guitablabel=%{GuiTabLabel()} set guitabtooltip=%{GuiTabToolTip()}
Comments
Looks good. In the first function, I think tabpagenr() should be v:lnum. We should probably just give this a very quick cosmetic tweak and remove the dodgy tag, and leave optimisation for later. JohnBeckett 10:40, May 6, 2010 (UTC)