Cómo colorear comentarios después de una columna definida

8

Una vez me dieron estos materiales para permitir que este ayudante vimmuestre una especie de línea vertical para ayudar a hacer cumplir las reglas PEP8 sobre el límite de longitud de línea en la columna 80:

"   Long lines highlighting.
nnoremap <Leader>H :call<SID>LongLineHLToggle()<cr>
hi OverLength ctermbg=none cterm=none
match OverLength /\%>80v/
fun! s:LongLineHLToggle()
    if !&diff
        if !exists('w:longlinehl')
            let w:longlinehl = matchadd('ErrorMsg', '.\%>80v', 0)
            echo "Long lines highlighted"
        else
            call matchdelete(w:longlinehl)
            unl w:longlinehl
            echo "Long lines unhighlighted"
        endif
    endif
endfunction

En acción:

alternador de resaltador de línea larga en acción

Utilizo todo esto para marcar la columna 80.

Dado suficiente tiempo y esfuerzo, podría tener una facilidad similar vimpara marcar texto mucho más allá de la columna 72 solo cuando esté en comentario. Supongo que alguien ya lo ha codificado en algún lugar en algún momento. ¿Ya sabes dónde encontrar ese fragmento?

13260
fuente
Puede averiguar si algo está resaltado como un comentario con synID()y synIDattr(). Algo así como: if ((synIDattr(synID(line("."), 72, 0), "name") =~ 'comment\c')
Tumbler41
¿Se supone que eso a un enlace nnoremapo autocmdo algo? Escribir eso en la :consola arrojó E110y E15🙁.
13260

Respuestas:

10

Pruebe una región de sintaxis contenida:

syn match TooLong contained containedin=pythonComment /\%50c.*/
hi link TooLong Error

En lugar de 50, usar 80o 72o cualquier columna que usted prefiere.

ingrese la descripción de la imagen aquí

muru
fuente
¿Qué vimversión es esa?
13260
1
8.0.586, utilizando molokai como esquema de colores.
muru
¿Te gusta vim --versionpresentar VIM - Vi IMproved 8.0.586 ...? No estoy seguro de lo que estoy haciendo, pero creo que no funciona para mí como suyo. El mío es revelador VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Mar 10 2017 00:54:29) ..., ese es el VIM vainilla de Debian Jessie.
13260
No hay nada particularmente nuevo en esto, todas las funciones que estoy usando aquí son bastante antiguas, y deberían funcionar con la versión 7.4.488 de Jessie (porque esto también funciona en Vim 7.4.160 de CentOS 7). Digamos, ¿probaste esto en un archivo Python? Como mencionaste PEP8, utilicé el containedin=pythonComment. Si está utilizando algún otro tipo de archivo, deberá buscar cuál es la región de sintaxis para los comentarios y utilizarla en su lugar.
muru
2
@uprego Ejecuta esos comandos después de abrir un archivo Python. Simplemente agregar esas líneas a un vimrcno funcionará, ya que los archivos de sintaxis cargados más tarde probablemente borrarían cualquier regla actual. Use un autocmd o ~/.vim/after/syntax/python.vim.
muru