2012-07-06 36 views
6

Vim es un editor muy productivo y me gusta usarlo todos los días, pero he descubierto que moverse entre pestañas lleva más tiempo de lo que debería.¿Cómo se enumeran las pestañas en vim?

Cuando quiero cambiar a otra pestaña a menudo repito gt o gT varias veces. Vim proporciona una mejor manera de llegar a la pestaña requerida - n + gt, donde n es el número de la pestaña. Pero para usarlo debes contar el número de pestaña primero. Se vuelve aburrido rápidamente si abre una docena de pestañas.

Creo que sería bueno enumerar las pestañas. Un solo número en cada ficha delante del nombre del archivo, algo como esto:

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

espero que sea posible configurar Vim para hacer esto mediante la edición de configuración o utilizando algún plugin.

¿Hay alguna manera de lograrlo?

+1

Puedes abrir pestañas en ViM ?! Todos los días aprendes algo nuevo con ViM – Shahbaz

Respuesta

5

Puede usar la opción tabline para configurar la etiqueta de las pestañas en el modo de consola de vim. Consulte la ayuda en :h setting-tabline que también muestra un ejemplo mínimo muy básico, que puede ajustar a su necesidad, p. para lo que quieras, usaría algo como esto:

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

¡Gracias, es exactamente lo que estaba buscando! Pero 'set tabline =%! MyTabLine()' debe agregarse en la parte inferior de su ejemplo, o todo no funcionará. – lambdas

+0

Oh sí, eso debería ser agregado. Lo pondré en la respuesta –

2

Si está utilizando gvim:

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

Tipo :help tabline y :help guitablabel para leer más.

Hay un function MyTabLine() en el documento.

+0

Gracias, pero estoy usando vim con terminal emulator. – lambdas

+0

Pruebe 'set tabline' – kev

Cuestiones relacionadas