So färben Sie Kommentare nach einer definierten Spalte

8

Ich habe diese Materialien einmal erhalten, damit dieser Helfer vimeine Art vertikale Linie anzeigen kann, um die Durchsetzung der PEP8-Regeln zur Begrenzung der Zeilenlänge in Spalte 80 zu unterstützen:

"   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

In Aktion:

Long Line Highlighter Togler in Aktion

Ich benutze all dies, um die 80. Spalte zu markieren.

Bei genügend Zeit und Mühe könnte ich eine ähnliche Möglichkeit haben vim, Text weit über Spalte 72 hinaus nur dann zu markieren, wenn ich ihn kommentiere. Ich denke, es wurde schon irgendwann irgendwo von jemandem codiert. Wissen Sie bereits, wo Sie dieses Snippet finden können?

13260
quelle
Sie können herausfinden, ob etwas als Kommentar mit synID()und markiert ist synIDattr(). So etwas wie: if ((synIDattr(synID(line("."), 72, 0), "name") =~ 'comment\c')
Tumbler41
Soll ich das mit einem nnoremapoder autocmdoder etwas verknüpfen ? Schreiben Sie das auf die :Konsole warf E110und E15🙁.
13260

Antworten:

10

Versuchen Sie es mit einem enthaltenen Syntaxbereich:

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

50Verwenden Sie stattdessen 80oder 72oder eine beliebige Spalte, die Sie bevorzugen.

Geben Sie hier die Bildbeschreibung ein

muru
quelle
Welche vimVersion ist das?
13260
1
8.0.586 unter Verwendung von Molokai als Farbschema.
Muru
Lust zu vim --versionpräsentieren VIM - Vi IMproved 8.0.586 ...? Ich bin mir nicht sicher, was ich tue, aber ich denke, es funktioniert nicht für mich als Ihre. Meins sagt VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Mar 10 2017 00:54:29) ..., das ist das Vanille-VIM von Debian Jessie.
13260
Darin ist nichts besonders Neues, alle Funktionen, die ich hier verwende, sind ziemlich alt und sollten mit Jessies 7.4.488 funktionieren (da dies auch mit CentOS 7 Vim 7.4.160 funktioniert). Haben Sie dies in einer Python-Datei getestet? Da Sie PEP8 erwähnt haben, habe ich das verwendet containedin=pythonComment. Wenn Sie einen anderen Dateityp verwenden, müssen Sie den Syntaxbereich für Kommentare nachschlagen und diesen stattdessen verwenden.
Muru
2
@uprego Führen Sie diese Befehle aus, nachdem Sie eine Python-Datei geöffnet haben. Das einfache Hinzufügen dieser Zeilen zu a vimrcfunktioniert nicht, da später geladene Syntaxdateien wahrscheinlich alle aktuellen Regeln löschen würden. Verwenden Sie ein Autocmd oder ~/.vim/after/syntax/python.vim.
Muru