Exportieren von Syntaxhervorhebungsregeln aus vim in vimrc-Format

399
Zaboj Campula

Wenn ich Protokolldateien in analysiere, erstelle vimich häufig Ad-hoc-Syntax-Hervorhebungsregeln zur besseren Orientierung. Zum Beispiel

:syntax match myerror match /NullPointerException/ :highlight myerror ctermbg=red 

So weit, ist es gut. Manchmal erstelle ich jedoch recht komplexe Regeln während einer langen Bearbeitungssitzung und möchte alle erstellten Ad-hoc-Regeln speichern, um sie wiederverwenden zu können. Ich kann sie ausdrucken:

:syntax myerror xxx match /NullPointerException/ :highlight myerror xxx ctermbg=4 

Diese Ausgabe enthält jedoch nicht nur Ad-hoc-Regeln und kann .vimrcaufgrund eines anderen Formats nicht einfach in eine oder in eine neue Syntaxdatei kopiert werden. Das :makevimrcspeichert überhaupt keine Syntax-Hervorhebungsregeln.

Irgendeine Idee, wie man Ad-hoc-Farbregeln exportieren kann?

1
Meines Wissens stellt Vim dafür keinen Mechanismus zur Verfügung. Ich würde sie aus meinem: -Befehlsverlauf kopieren, indem ich im normalen Modus 'q:' (q, Doppelpunkt) eingebe und danach suche. Heptite vor 7 Jahren 1
@Heptite: Guter Hinweis! Mir wurde klar, dass es möglich ist, den Befehlsverlauf zu bearbeiten, so dass ich `q:` ausführen kann und dann alle Nicht-Syntaxbefehle `: g! / ^ Sy / d` löschen und alle kopieren kann. Und das Gleiche für "Hallo". Vielen Dank. Zaboj Campula vor 7 Jahren 0
Da Sie eine vollständige Lösung finden konnten, können Sie Ihre eigene Frage mit vollständigen Anweisungen beantworten und diese als akzeptiert markieren. Heptite vor 7 Jahren 0
Ich denke nicht, dass es eine vollständige Lösung ist. Ich würde +1 geben, um so zu antworten, würde es aber nicht akzeptieren, weil ich immer noch hoffe, dass es einen bequemeren Weg gibt. Wenn niemand mit einer besseren Lösung kommt, schreibe ich vielleicht eine Funktion basierend auf den obigen Kommentaren, vorbei an dieser Stelle und könnte aus meiner Sicht eine akzeptable Antwort sein. Zaboj Campula vor 7 Jahren 0

1 Antwort auf die Frage

1
Heptite

Meines Wissens gibt es dafür keinen nativen Vim-Mechanismus. Ich denke, es wird davon ausgegangen, dass Sie, wenn Sie einen Syntax-Highlight-Regelsatz entwickeln, dies von Anfang an in einem Vim-Skript tun werden.

Ich habe ein einfaches Vim-Skript zusammengestellt, das alle Syntax- und Hervorhebungsbefehle aus dem: -Befehlsverlauf an eine benannte Datei anfügt:

function! GetSyntaxHistory() let l:lines=[] for l:i in range(1,histnr(':')) let l:line = histget(':', l:i) if l:line =~ '^\s*\(syn\|syntax\|hi\|highlight\)\s\+' let l:lines += [l:line] endif endfor return l:lines endfunction  function! WriteSyntax(file) let l:lines = GetSyntaxHistory() call writefile(l:lines, a:file, 'a') endfunction  command! -nargs=1 -complete=file ExportSyn call WriteSyntax(<f-args>)