.md 文件没有语法高亮?

kry*_*tah 15 vim markdown

Vim 正确突出显示.markdown文件,但它似乎不熟悉.md文件类型。对问题/sf/ask/767527701/ 的评论似乎暗示这.md是用于降价文件的错误文件扩展名。我有点困惑。

.md错误的扩展名吗?如果没有,为什么 Vim 不突出显示其语法?

Vim 版本: 7.4

Ing*_*kat 12

分析

在 中$VIMRUNTIME/filetype.vim,您会发现:

" Markdown
au BufNewFile,BufRead *.markdown,*.mdown,*.mkd,*.mkdn,README.md  setf markdown
Run Code Online (Sandbox Code Playgroud)

所以,只有README.md被检测为 Markdown。搜索时可以在同一文件中找到一个原因*.md

" Modula 2
au BufNewFile,BufRead *.m2,*.DEF,*.MOD,*.md,*.mi setf modula2
Run Code Online (Sandbox Code Playgroud)

解释

MIME 类型(存在注册表的地方)不同,文件扩展名不是标准化的,并且(特别是对于短的),多种可能的含义重叠。由您决定如何处理它们。如果这foo.md意味着 Markdown 文件比 Modula 2 源代码更有可能,只需覆盖 Vim 的默认值,例如通过

au BufNewFile,BufRead *.md  setf markdown
Run Code Online (Sandbox Code Playgroud)

~/.vim/ftdetect/markdown.vim,或如 中所述:help new-filetype


Pat*_*ryk 9

autocmd BufRead,BufNew *.md setf markdown
Run Code Online (Sandbox Code Playgroud)

在 vim 7.4 上对我不起作用,所以我不得不使用“旧”的传统方式来设置文件类型:

autocmd BufRead,BufNew *.md set filetype=markdown
Run Code Online (Sandbox Code Playgroud)

这会*.md正确突出显示文件。

  • 这是你想要的。最重要的答案不起作用。 (3认同)

rom*_*inl 8

将这些行添加到您的~/.vimrc

augroup markdown

    " remove previous autocmds
    autocmd!

    " set every new or read *.md buffer to use the markdown filetype 
    autocmd BufRead,BufNew *.md setf markdown

augroup END
Run Code Online (Sandbox Code Playgroud)