Vim 마크다운 구문이 굵게 표시하는 데 사용되는 기울임꼴 별표로 강조 표시되지 않도록 하는 방법은 무엇입니까?

Vim 마크다운 구문이 굵게 표시하는 데 사용되는 기울임꼴 별표로 강조 표시되지 않도록 하는 방법은 무엇입니까?

ConEmu의 Windows에서 Vim 7.4를 사용하면(다른 플랫폼/설정에서도 동일한 것을 보았지만) 구문 강조 표시가 굵은 영역 내의 기울임꼴 하위 영역으로 시작 및 끝 이중 별표와 일치한다는 것을 알 수 있습니다. 이것은 눈에 거슬리는 일입니다.

굵은 글씨로 별표를 이탤릭체로 강조하는 Vim 마크다운

여기저기 조사한 결과 이 ​​문제의 원인을 찾은 것 같습니다(에서 $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

그리고 더 아래로:

hi def link markdownItalic                htmlItalic
hi def link markdownBold                  htmlBold
hi def link markdownBoldItalic            htmlBoldItalic

보시다시피 굵은 글씨체는 이탤릭체를 하위 영역으로 허용합니다. 문제는 markdownItalic에서 제거하면 contains=다음과 같습니다.

굵은 이탤릭체로 작동

더 이상 제대로 작동하지 않습니다.

볼드체와 이탤릭체가 잘못되었습니다

다른 문제가 해결되었음에도 불구하고. 또한 \S정규식에서 이탤릭체를 대체하려고 시도했지만 [^*]그것도 작동하지 않았습니다. 또한, 설치Plastic Boy의 마크다운 플러그인그것을 고치지 않았습니다.

이 짜증나는 사건을 해결하는 방법에 대한 아이디어가 있나요?

답변1

따라서 다음과 같은 기본 개념이 작동합니다.

\S또한 정규식에서 이탤릭체를 대체하려고 시도했지만 [^*]그것도 작동하지 않았습니다.

복사 $VIMRUNTIME/syntax/markdown.vim해서 ~/.vim/syntax/syn region markdownItalic...줄을 다음과 같이 변경하세요.

syn region markdownItalic start="[^* ]\@<=\*\*\@!\|\*\@<!\*[^* ]\@=" end="[^* ]\@<=\*\|\*\@<!\*[^* ]\@=" keepend contains=markdownLineStart
syn region markdownItalic start="[^_ ]\@<=__\@!\|_\@<!_[^_]\@=" end="[^_ ]\@<=_\|_\@<!_[^_]\@=" keepend contains=markdownLineStart

또한 특히 Tim Pope의 현재vim-마크다운문제가 없습니다(이 글을 쓰는 시점에서는 이탤릭체와 관련된 다른 문제가 있지만 Vim 구문 강조로 해결하기 어려운 문제인 것 같습니다).

관련 정보