Tell me more ×
Super User is a question and answer site for computer enthusiasts and power users. It's 100% free, no registration required.

Lets say I opened file1.txt, file2.txt, file3a.txt and file3b.txt such that the tabline (the thing on the top) looks like this:

file1.txt  file2.txt  2 file3a.txt

(Note how file3b.txt. is missing because it is shown in a split, in the same tab as file3a.txt)

To move more quickly between tabs (with <Number>gt), I would like each tab to display its index, along the filename. Like so:

1:<file1.txt>  2:<file2.txt>  3:<2 file3a.txt>

The formatting (the angle braces in particular) are optional; I just want the index to appear there (the 1:, 2: and so on).

No clues on :h tab-page-commands or google whatsoever.

share|improve this question

3 Answers

up vote 1 down vote accepted

You need to look at:

:help 'tabline'
:help setting-tabline

And if you have "e" in your 'guioptions' setting:

:help 'guitablabel'
share|improve this answer
That got me on the right track. Thanks a lot! – bitmask Sep 3 '11 at 1:22
@bitmask could your perhaps provide your solution? Heptite, could you amend your answer? – wmarbut Sep 10 '12 at 18:33

put this in your vimrc

" Rename tabs to show tab number.
" (Based on http://stackoverflow.com/questions/5927952/whats-implementation-of-vims-default-tabline-function)
if exists("+showtabline")
    function! MyTabLine()
        let s = ''
        let wn = ''
        let t = tabpagenr()
        let i = 1
        while i <= tabpagenr('$')
            let buflist = tabpagebuflist(i)
            let winnr = tabpagewinnr(i)
            let s .= '%' . i . 'T'
            let s .= (i == t ? '%1*' : '%2*')
            let s .= ' '
            let wn = tabpagewinnr(i,'$')

            let s .= '%#TabNum#'
            let s .= i
            " let s .= '%*'
            let s .= (i == t ? '%#TabLineSel#' : '%#TabLine#')
            let bufnr = buflist[winnr - 1]
            let file = bufname(bufnr)
            let buftype = getbufvar(bufnr, 'buftype')
            if buftype == 'nofile'
                if file =~ '\/.'
                    let file = substitute(file, '.*\/\ze.', '', '')
                endif
            else
                let file = fnamemodify(file, ':p:t')
            endif
            if file == ''
                let file = '[No Name]'
            endif
            let s .= ' ' . file . ' '
            let i = i + 1
        endwhile
        let s .= '%T%#TabLineFill#%='
        let s .= (tabpagenr('$') > 1 ? '%999XX' : 'X')
        return s
    endfunction
    set stal=2
    set tabline=%!MyTabLine()
    set showtabline=1
    highlight link TabNum Special
endif
share|improve this answer

For GUI-based Vim (Gvim on Linux, MacVim on Mac, etc), put this in your .gvimrc:

set guitablabel=%N:%M%t " Show tab numbers

Some tips on actually using the displayed numbers:

  • Ngt will switch to tab N. For example, 3gt goes to tab 3.
  • :tabm2 moves the current tab to appear after tab 2.
    • To move this tab to the first position, use :tabm0
    • To move this tab to the last position, just use :tabm
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.