2008-12-27 18 views
17

Me gustaría que vim coloree líneas "largas" para mí. Usando 80 columnas como ejemplo, me gustaría resaltar las líneas que exceden esa longitud. Aquí está más o menos lo que creo que debería contener el archivo .vimrc, aunque (1) no funciona y (2) utiliza la sintaxis de expresiones regulares de Perl para ilustrar mi punto, porque no conozco suficientemente a Vim:Coloreado de sintaxis Vim: ¿Cómo puedo resaltar solo las líneas largas?

... 
highlight Excess ctermbg=0 
au Syntax * syn match Excess /.{80,}$/ 
... 

Esto (al menos en mi opinión) debería marcar líneas que superan las 80 columnas. Lo que idealmente me gustaría es la capacidad de colorear solo la parte de la línea que exceda las 80 columnas, por lo que si una línea tiene 85 columnas, se resaltarán las columnas 81 a 85.

estoy seguro de Vim puede hacer esto, pero no conmigo a la cabeza.

+1

+1. Gran pregunta! Ahora, no tengo ni idea de la respuesta, pero me mantendré atento. – PEZ

+1

Quizás colorcolumn sea algo para ti. –

Respuesta

26

necesitaba el autocomand a trabajar para mí:

augroup vimrc_autocmds 
    autocmd BufEnter * highlight OverLength ctermbg=darkgrey guibg=#111111 
    autocmd BufEnter * match OverLength /\%75v.*/ 
augroup END 

También al igual que la idea de utilizar 75 si está destinado a 80 columnas en promedio.

Tomado de:

http://blog.ezyang.com/2010/03/vim-textwidth/

razones posibles por las que falla sin BufEnter: + destacado partido sólo pueden usarse una vez. El uso múltiple significa que los antiguos están anulados. How to add multiple highlights

+0

Gracias. No estaba funcionando para mí hasta que use su solución. – jononomo

+0

Para evitar destacando el carácter de fin de línea, se debe cambiar la expresión regular a: '/ \%> 74v \ + /' http://stackoverflow.com/questions/235439/vim-80-column-layout-concerns#. comment2448229_235970 – Wex

1

utilizo el siguiente método:

hi gitError ctermbg=Red 
match gitError /^.*\s$/ 
2match gitError /^.\{120\}.*$/ 

(Estos coincidencia alguna git ganchos pre-commit)

La segunda línea debe ser de interrest a usted.

+0

Gracias. Esto (/^.\{120\}.*$/) resalta toda la línea, ¿alguna idea sobre simplemente resaltar desde los caracteres 121 en adelante? –

+0

Lo siento, no tengo idea. El problema es que puede no ser factible con expresiones regulares. Ya sabes, es probable que requiera una máquina de pila. – terminus

+0

Puede resaltar solo los primeros 80 caracteres. Lo sé, no es exactamente lo que quieres, pero de todos modos verás el exceso con bastante claridad. – PEZ

15

tengo unas pocas cosas en mi vimrc.
lo encontré aquí: Vim 80 column layout concerns

highlight OverLength ctermbg=darkred ctermfg=white guibg=#FFD9D9 
match OverLength /\%81v.*/ 

Es posible que desee ajustar los colores a sus preferencias.

+2

+1.Ahora, si alguien pudiera explicar por qué funciona eso me ayudaría mucho porque no lo entiendo. – PEZ

+10

Esto solo funciona para el primer archivo que abra en un búfer dado – gravitation

+1

@BrandonThomson ¿hay alguna forma de evitarlo? O una forma alternativa? –

2

Como no me gusta el marcador de columna Vim 7.3, utilizo el texto resaltado después de la columna 80 ... al menos eso es lo que quiero el 95% del tiempo.

Para el otro 5% de las veces, me escribió esta pequeña extensión de tener también una forma rápida de desactivar el punto culminante:

https://gist.github.com/fgarcia/9704429#file-long_lines-vim

+0

Estaba buscando una manera rápida de alternar eso. Tu plugin es asombroso –

+0

Aunque me gustaría que cambiar las pestañas no volviera a habilitar el resaltado si lo tuviera apagado. –

+1

Creo que debería resolverse usando BufRead (quizás BufAdd ??) en lugar de BufEnter en las primeras líneas. Avísame si eso funciona para ti – SystematicFrank

1

Este utiliza un AutoCommand para ajustar el valor de exceso de longitud para coincidir con su Tipo de archivo.

" highlight lines longer than `textwidth` size for each filetype 
autocmd FileType * 
    \ if &textwidth | 
    \ exec 'match OverLength /\%' . string(&textwidth+2) . 'v.*/' | 
    \ endif 
Cuestiones relacionadas