Como colorir comentários após uma coluna definida

8

Certa vez, recebi esses materiais para permitir que esse assistente vimmostre o tipo de linha vertical para ajudar a aplicar as regras do PEP8 no limite de comprimento de linha na coluna 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

Em ação:

marcador de linha longa marca-texto em ação

Eu uso tudo isso para marcar a 80ª coluna.

Com tempo e esforço suficientes, eu poderia ter uma facilidade semelhante vimpara marcar texto muito além da coluna 72 apenas quando estiver comentando. Eu acho que já foi codificado por alguém em algum lugar em algum momento. Você já sabe onde encontrar esse snippet?

13260
fonte
Você pode descobrir se algo está destacado como um comentário com synID()e synIDattr(). Algo como: if ((synIDattr(synID(line("."), 72, 0), "name") =~ 'comment\c')
Tumbler41
Am I suposto link que a uma nnoremapou autocmdou algo assim? Escrevendo isso para o :console jogou E110e E15🙁.
13260

Respostas:

10

Tente uma região de sintaxe contida:

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

Em vez de 50, use 80ou 72ou a coluna que você preferir.

insira a descrição da imagem aqui

muru
fonte
Qual vimversão é essa?
13260
1
8.0.586, usando molokai como esquema de cores.
muru 13/07/19
Gosta de vim --versionapresentar VIM - Vi IMproved 8.0.586 ...? Não tenho certeza do que estou fazendo, mas acho que não está funcionando para mim como seu. O meu está dizendo VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Mar 10 2017 00:54:29) ..., esse é o VIM de baunilha do Debian Jessie.
13260
Não há nada de particularmente novo nisso, todos os recursos que estou usando aqui são bastante antigos e devem funcionar com o 7.4.488 de Jessie (porque isso funciona também no Vim 7.4.160 do CentOS 7). Diga, você testou isso em um arquivo Python? Desde que você mencionou o PEP8, eu usei o containedin=pythonComment. Se você estiver usando outro tipo de arquivo, terá que procurar qual é a região de sintaxe para comentários e usá-la.
Muru
2
@uprego Execute esses comandos depois de abrir um arquivo Python. Simplesmente adicionar essas linhas a um vimrcnão funcionará, pois os arquivos de sintaxe carregados mais tarde provavelmente limparão as regras atuais. Use um autocmd ou ~/.vim/after/syntax/python.vim.
Muru