Подсветка синтаксиса vim по умолчанию для уценки основана на стандартной уценке, которая рассматривает каждую вкладку или строку с отступом в четыре пробела как начало блока кода. Из markdown.vim:
syn region markdownCodeBlock start=" \|\t" end="$" contained
Однако я использую kramdown, который позволяет делать сноски (как и некоторые другие, такие как Pandoc, Markdown Extra и MultiMarkdown). Я придумал эту модификацию правила, чтобы разрешить подсветку синтаксиса и проверку орфографии в сносках, но не в блоках кода:
syn region markdownCodeBlock start="\(\[\^.*\]:\n\)\@<! \|\t" end="$" contained
Однако он далеко не идеален, потому что он не позволяет сноскам начинаться на той же строке, что и их экземпляр, не позволяет использовать блоки кода внутри сносок и не позволяет использовать сноски, состоящие из нескольких абзацев. Любые предложения о том, как сделать это лучше?