Comment colorer les commentaires après une colonne définie


8

Une fois, j'ai reçu ces documents pour permettre à cet assistant vimd'afficher une sorte de ligne verticale afin d'aider à appliquer les règles PEP8 sur la limite de longueur de ligne à la colonne 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 action:

basculeur surligneur longue ligne en action

J'utilise tout cela pour marquer la 80e colonne.

Étant donné suffisamment de temps et d'efforts, je pourrais très bien avoir une facilité similaire vimpour marquer le texte bien au-delà de la colonne 72 uniquement dans les commentaires. Je suppose qu'il a déjà été codé par quelqu'un quelque part à un moment donné. Savez-vous déjà où trouver cet extrait?


Vous pouvez savoir si quelque chose est mis en surbrillance en tant que commentaire avec synID()et synIDattr(). Quelque chose comme: if ((synIDattr(synID(line("."), 72, 0), "name") =~ 'comment\c')
Tumbler41

Suis-je censé lier cela à un nnoremapou autocmdou quelque chose? L'écriture sur la :console a jeté E110et E15🙁.
13260

Réponses:


10

Essayez une région de syntaxe contenue:

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

Au lieu de 50, utilisez 80ou 72ou selon la colonne que vous préférez.

entrez la description de l'image ici


De quelle vimversion s'agit-il?
13260

1
8.0.586, en utilisant molokai comme schéma de couleurs.
muru

Vous aimez vim --versionprésenter VIM - Vi IMproved 8.0.586 ...? Je ne suis pas sûr de ce que je fais, mais je pense que cela ne fonctionne pas pour moi comme le vôtre. Le mien est révélateur VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Mar 10 2017 00:54:29) ..., c'est le VIM vanille de Debian Jessie.
13260

Il n'y a rien de particulièrement nouveau dans ce domaine, toutes les fonctionnalités que j'utilise ici sont assez anciennes et devraient fonctionner avec la version 7.4.488 de Jessie (car cela fonctionne également avec le Vim 7.4.160 de CentOS 7). Dites, avez-vous testé cela dans un fichier Python? Puisque vous avez mentionné PEP8, j'ai utilisé le containedin=pythonComment. Si vous utilisez un autre type de fichier, vous devrez rechercher la région de syntaxe des commentaires et l'utiliser à la place.
muru

2
@uprego Exécutez ces commandes après avoir ouvert un fichier Python. L'ajout de ces lignes à un vimrcne fonctionnera pas, car les fichiers de syntaxe chargés plus tard effaceraient probablement toutes les règles actuelles. Utilisez un autocmd ou ~/.vim/after/syntax/python.vim.
muru
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.