
Wenn ich Vim 7.4 unter Windows in ConEmu verwende (obwohl ich dasselbe auf anderen Plattformen/Setups gesehen habe), stelle ich fest, dass die Syntaxhervorhebung die Anfangs- und End-Doppelsternchen als kursive Unterbereiche innerhalb des fettgedruckten Bereichs anpasst, den sie kennzeichnen. Das ist ein Schandfleck:
Nachdem ich herumgestöbert habe, glaube ich, die Ursache dieses Problems gefunden zu haben (von $VIMRUNTIME/syntax/markdown.vim
):
syn region markdownItalic start="\S\@<=\*\|\*\S\@=" end="\S\@<=\*\|\*\S\@=" keepend contains=markdownLineStart
syn region markdownItalic start="\S\@<=_\|_\S\@=" end="\S\@<=_\|_\S\@=" keepend contains=markdownLineStart
syn region markdownBold start="\S\@<=\*\*\|\*\*\S\@=" end="\S\@<=\*\*\|\*\*\S\@=" keepend contains=markdownLineStart,markdownItalic
syn region markdownBold start="\S\@<=__\|__\S\@=" end="\S\@<=__\|__\S\@=" keepend contains=markdownLineStart,markdownItalic
syn region markdownBoldItalic start="\S\@<=\*\*\*\|\*\*\*\S\@=" end="\S\@<=\*\*\*\|\*\*\*\S\@=" keepend contains=markdownLineStart
syn region markdownBoldItalic start="\S\@<=___\|___\S\@=" end="\S\@<=___\|___\S\@=" keepend contains=markdownLineStart
Und weiter unten:
hi def link markdownItalic htmlItalic
hi def link markdownBold htmlBold
hi def link markdownBoldItalic htmlBoldItalic
Wie Sie sehen, akzeptiert die Fettschrift Kursivschrift als Unterbereich. Das Problem ist, wenn ich Folgendes markdownItalic
daraus entferne contains=
:
funktioniert nicht mehr richtig:
obwohl es das andere Problem behoben hat. Ich habe auch versucht, \S
die regulären Ausdrücke durch kursiv zu ersetzen, [^*]
aber das hat auch nicht funktioniert. Außerdem installiert manMarkdown-Plugin von Plastic Boyhat es nicht behoben.
Irgendwelche Ideen, wie man diesen lästigen Fall umgehen kann?
Antwort1
Dieses Grundkonzept funktioniert also:
Ich habe auch versucht,
\S
die regulären Ausdrücke durch „Kursivschrift“ zu ersetzen[^*]
, aber das hat auch nicht funktioniert.
Kopieren Sie einfach die beiden Zeilen und ändern Sie sie $VIMRUNTIME/syntax/markdown.vim
in~/.vim/syntax/
syn region markdownItalic...
syn region markdownItalic start="[^* ]\@<=\*\*\@!\|\*\@<!\*[^* ]\@=" end="[^* ]\@<=\*\|\*\@<!\*[^* ]\@=" keepend contains=markdownLineStart
syn region markdownItalic start="[^_ ]\@<=__\@!\|_\@<!_[^_]\@=" end="[^_ ]\@<=_\|_\@<!_[^_]\@=" keepend contains=markdownLineStart
Außerdem scheint es bemerkenswert, dass Tim Popes aktuellevim-markdownhat dieses Problem nicht (obwohl es zum Zeitpunkt des Schreibens dieses Artikels andere Probleme im Zusammenhang mit Kursivschrift gibt; es scheint, dass dies ein schwieriges Problem ist, das mit der Syntaxhervorhebung von Vim zu lösen ist).