2011-08-30 18 views
26

¿Cómo se puede modificar el color de la barra de pestañas de vim?Personalizar los colores de la barra de pestañas de vim

He intentado usar

:hi TabLineFill ctermbg=N 

la que hace cambiar el color de fondo de la barra de pestañas para el color que significa 'N', pero esto es todo lo que he logrado recoger de buscar en Google. Eché un vistazo al :help cterm-colors, pero no obtuve mucha más comprensión de él.

¿Podría utilizar esta característica resaltada para cambiar el color del primer plano y el fondo de una pestaña activa, y el primer plano y el fondo de una pestaña inactiva? Si es así, ¿cómo voy a hacer esto?

Respuesta

38

Puede hacer lo siguiente, por ejemplo:

:hi TabLineFill ctermfg=LightGreen ctermbg=DarkGreen 
:hi TabLine ctermfg=Blue ctermbg=Yellow 
:hi TabLineSel ctermfg=Red ctermbg=Yellow 

Esta línea afecta el contador de la ventana por pestaña:

:hi Title ctermfg=LightBlue ctermbg=Magenta 

colores chillones elegidas para destacar lo que cada uno de los artículos cambios.

Encuentro que mirar $VIMRUNTIME/colors/*.vim realmente ayuda cuando juego con highlighting.

Tenga en cuenta que estos cambian los colores para Vim que se ejecuta en una consola. Si desea cambiar los colores de GVim, necesita usar guibg, guifg, y otros. Por ejemplo:

:hi TabLineFill guifg=LightGreen guibg=DarkGreen ctermfg=LightGreen ctermbg=DarkGreen 
+1

¿Cómo se marca el contador de la ventana por pestaña cuando se selecciona esa pestaña? – jviotti

7

Sí, lo haría.

Hay tres elementos en la línea pestaña que se puede personalizar a su gusto: TabLine, TabLineSel y TabLineFill.

TabLineSel - es la etiqueta actual (por decirlo así) ficha activa.
TabLine - son las etiquetas que no están activas actualmente.
TabLineFill - es el resto de la tabline donde no hay etiquetas (fondo).

Modifique los tres de la forma habitual.

3

La opción 'tabline' especifica cómo se ve la línea con las etiquetas de las páginas con pestañas. Solo se usa cuando no hay una línea de tabulación de GUI.

Puede utilizar la opción 'showtabline' para especificar cuándo desea que la línea con etiquetas de las páginas pestaña a aparecer: no, cuando hay más de una página o pestaña siempre.

El resaltado de la línea de las páginas de pestañas se establece con los grupos TabLine TabLineSel y TabLineFill.| hl-TabLine | | hl-TabLineSel | | hl-TabLineFill |

Se mostrará un "+" para una página con pestañas que tiene una ventana modificada. También se muestra el número de ventanas en un tabulador. Por lo tanto, "3+" significa tres ventanas y una de ellas tiene un buffer modificado.

La opción 'tabline' le permite definir su forma preferida de etiquetar las páginas . Esto no es fácil, así se dará un ejemplo aquí.

Para información básica, consulte la opción 'línea de estado'. Se pueden usar los mismos elementos en la opción 'tabline'. Además, | tabpagebuflist() |, | tabpagenr() | y | tabpagewinnr() | las funciones son útiles.

Dado que el número de etiquetas de pestaña variará, debe usar una expresión para como opción completa. Algo así como:> : establecer tabline =%! MyTabLine()

A continuación, defina la función MyTabLine() para mostrar todas las etiquetas de las pestañas. Un método conveniente de es dividirlo en dos partes: Primero revise todas las páginas de la pestaña y defina las etiquetas para ellas. Luego, obtenga la etiqueta para cada página de pestañas. >

function 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' 

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

    " after the last tab fill with TabLineFill and reset tab page nr 
    let s .= '%#TabLineFill#%T' 

    " right-align the label to close the current tab page 
    if tabpagenr('$') > 1 
    let s .= '%=%#TabLine#%999Xclose' 
    endif 

    return s 
endfunction 

Ahora se llama a la función MyTabLabel() para que cada etiqueta reciba su etiqueta. >

function MyTabLabel(n) 
    let buflist = tabpagebuflist(a:n) 
    let winnr = tabpagewinnr(a:n) 
    return bufname(buflist[winnr - 1]) 
endfunction 

Esto es sólo un ejemplo simplista que resulta en una pestaña páginas línea que se asemeja a la forma predeterminada, pero sin la adición de un + para un buffer modificado o truncar los nombres. Deberá reducir el ancho de las etiquetas en una forma inteligente de cuando no haya espacio suficiente. Compruebe la opción 'columnas' para el espacio disponible.

+1

lol copiar y pegar literalmente. no es que esta sea una mala respuesta. – Kvass

Cuestiones relacionadas