2011-11-23 14 views
29

¿Hay alguna manera de resaltar solo el número de línea actual (en el coloumn de la izquierda) en vim, sin resaltar el fondo de la línea actual? Idealmente, me gustaría hacer que el número de línea actual sea negrita.Resaltando el número de línea actual en vim

+0

No lo sé, pero te das cuenta de que está en la parte inferior de la ventana, ¿sí? – Andrew

+0

No está en la parte inferior de mi ventana. La parte inferior de mi ventana solo contiene el texto --INSERT--. ¿Cómo se muestra la posición actual del documento en la parte inferior de la ventana? – cg433n

+0

No me di cuenta de que no estaba activado por defecto, pero aparentemente 'set rule' podría ser un comando para eso: http://www.linuxquestions.org/questions/linux-desktop-74/show-line-and- column-numbers-in-vim-7-0-a-478231/ – Andrew

Respuesta

30

Hay dos grupos que determinan el resaltado de la línea que se muestra cuando la opción &cursorline está activa: CursorLine y CursorLineNR. Primero se usa para resaltar toda la línea, segundo para el número de línea. Así que para lograr lo que quiere usted debe

  1. Borrar el resaltado de CursorLine: simplemente hi clear CursorLinedespués de cualquier :colorscheme y set background= llamada.

    hi clear CursorLine 
    augroup CLClear 
        autocmd! ColorScheme * hi clear CursorLine 
    augroup END 
    
  2. Establecer el resaltado de CursorLineNR si no se encuentra en su esquema de colores:

    hi CursorLineNR cterm=bold 
    augroup CLNRSet 
        autocmd! ColorScheme * hi CursorLineNR cterm=bold 
    augroup END 
    

    (mejor para comprobar si ya se encuentra en el esquema de colores, tal vez se verá mejor en ese caso)

Puede unir ambos autocomandos en uno por supuesto.

CursorLineNR ha sido añadido recientemente recientemente alrededor de la versión 7.3.488.

+0

Solución inteligente. ¿Para qué sirve el asterisco (después de autocmd! ColorScheme)? No estoy muy versado en vimscript. – cg433n

+0

@ChristopherGreen ': h: autocmd': le mostraría que solo puede ser un patrón. Un solo asterisco significa que este autocomando se ejecutará para cada esquema de colores. – ZyX

+1

@ZyX Gracias por su gran respuesta, pero 'CursorLineNR' funciona para todas las versiones de Vim? Intento seguir tu respuesta, pero no puedo resaltar el número de línea actual con Vim 7.3. – Yang

12

Usted quiere mirar

:se cursorline 

y tal vez incluso/También

:se cursorcolumn 
+0

¿Cómo desactivarlo? –

+2

@ Pétur como con cualquier otra opción, entonces ': se cul!' O p. ': se nocursorline' – sehe

0

La ayuda para highlight-groups no menciona un "número de línea actual" exclusivo grupo de sintaxis, así que la respuesta oficial podría ser no.

Es posible que desee echar un vistazo en la opción cursorline que resalta toda la línea, si es útil.

8

Esto es lo que funcionó para mí:

highlight CursorLine cterm=NONE ctermbg=NONE ctermfg=NONE guibg=NONE guifg=NONE 
set cursorline 

sólo estoy usando esto en mi .vimrc después de haber establecido el esquema de color. Por supuesto, también podría establecer un color de fondo específico, pero establecerlos a NONE solo resalta el número de línea (es decir, lo hace más brillante).

Supongo que podría simplemente usar :hi CursorLine cterm=NONE, pero solo quería asegurarme de hacer todo transparente (incluido gvim).

Con CursorLineNR pude establecer el primer plano y los colores de fondo del número resaltado.

Solo escribo esto porque para mí funcionó sin autocomandos y puede ser lo que la mayoría de la gente necesita.

+0

Esta es una bonita manera de bajo impacto para resaltar la línea. Me encanta! – f1lt3r

+0

Directo y elegante. – Hritik

Cuestiones relacionadas