2012-07-06 23 views
6

Vim è un editor molto produttivo e mi piace usarlo tutti i giorni, ma ho scoperto che spostarsi tra le schede richiede più tempo del dovuto.Come enumerare le schede in vim?

Quando voglio passare a un'altra scheda, ripeto spesso gt o gT più volte. Vim fornisce un modo migliore per raggiungere la scheda richiesta - n + gt, dove n è il numero di scheda. Ma per usarlo dovresti prima contare il numero di tabulazione. Diventa rapidamente noioso se apri una dozzina di schede.

Penso che sarebbe bello enumerare le schede. Un numero unico in ogni scheda di fronte a nome del file, qualcosa di simile:

1 Readme | 2 main.c | 3 main.h | 4 process.h 

Spero che sia possibile configurare vim per farlo modificando config o utilizzando alcuni plugin.

C'è un modo per raggiungerlo?

+1

È possibile aprire le schede in ViM ?! Ogni giorno impari qualcosa di nuovo con ViM – Shahbaz

risposta

5

È possibile utilizzare l'opzione tabline per l'impostazione dell'etichetta delle schede in modalità console di vim. Vedere la guida allo :h setting-tabline che mostra anche un esempio minimo di base, che è possibile modificare secondo le proprie necessità, ad es. per quello che vuoi, vorrei usare qualcosa del genere:

fu! MyTabLabel(n) 
let buflist = tabpagebuflist(a:n) 
let winnr = tabpagewinnr(a:n) 
let string = fnamemodify(bufname(buflist[winnr - 1]), ':t') 
return empty(string) ? '[unnamed]' : string 
endfu 

fu! MyTabLine() 
let s = '' 
for i in range(tabpagenr('$')) 
" select the highlighting 
    if i + 1 == tabpagenr() 
    let s .= '%#TabLineSel#' 
    else 
    let s .= '%#TabLine#' 
    endif 

    " set the tab page number (for mouse clicks) 
    "let s .= '%' . (i + 1) . 'T' 
    " display tabnumber (for use with <count>gt, etc) 
    let s .= ' '. (i+1) . ' ' 

    " the label is made by MyTabLabel() 
    let s .= ' %{MyTabLabel(' . (i + 1) . ')} ' 

    if i+1 < tabpagenr('$') 
     let s .= ' |' 
    endif 
endfor 
return s 
endfu 
set tabline=%!MyTabLine() 
+0

Grazie, è esattamente quello che stavo cercando! Ma 'set tabline =%! MyTabLine()' dovrebbe essere aggiunto nella parte inferiore del tuo esempio, o l'intera cosa non funzionerà. – lambdas

+0

Oh sì, dovrebbe essere aggiunto. Lo metterò nella risposta –

2

Se si utilizza gvim:

set guitablabel=(%N)\ %t\ %M 

Tipo :help tabline e :help guitablabel per saperne di più.

C'è un function MyTabLine() nel doc.

+0

Grazie, ma sto usando vim con l'emulatore di terminale. – lambdas

+0

Prova 'set tabline' – kev

Problemi correlati