问题原因
为了了解哪个脚本设置了此文件类型,我在编辑 foo.md 后执行了以下命令。
:verbose set filetype?
我发现以下输出。
filetype=modula2
Last set from /usr/share/vim/vim74/filetype.vim
在 /usr/share/vim/vim74/filetype.vim 中,我找到了以下几行。
au BufNewFile,BufRead *.markdown,*.mdown,*.mkd,*.mkdn,*.mdwn,README.md setf markdown
au BufNewFile,BufRead *.m2,*.DEF,*.MOD,*.md,*.mi setf modula2
这些行显示,当编辑 README.md 时,文件类型设置为markdown
但在编辑扩展名为 .md 的任何其他文件时,文件类型设置为modula2
。换句话说,*.md 文件被识别为 Modula-2 源代码,但 README.md 例外,它被识别为 Markdown 代码,这可能是由于 README.md 文件在 GitHub 上越来越受欢迎。
Solution
在 ~/.vimrc 中添加以下语句即可set filetype=markdown
对于所有 .md 文件。
autocmd BufNewFile,BufRead *.md set filetype=markdown
该语句表示当开始编辑一个不存在的新文件或开始编辑一个新缓冲区时,将文件读入缓冲区后,如果文件与模式匹配*.md
then set filetype=markdown
.
Update
在我现在的 Vim 更新版本中,我发现这个问题不再存在。
$ vim --version | head -n 2
VIM - Vi IMproved 7.4 (2013 Aug 10, compiled Mar 31 2015 23:36:07)
Included patches: 1-488, 576
$ grep -E "markdown|modula2" /usr/share/vim/vim74/filetype.vim
au BufNewFile,BufRead *.markdown,*.mdown,*.mkd,*.mkdn,*.mdwn,*.md setf markdown
au BufNewFile,BufRead *.m2,*.DEF,*.MOD,*.mi setf modula2
补丁位于ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.860 ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.860似乎已经做出了这个改变。然而,我有点困惑的是,补丁 860 中似乎可用的这些更改如何在我的 Vim 版本中可用,其中仅包含补丁 1-448、576。