如何使Vim了解* .md文件包含Markdown代码,而不是Modula-2代码?

参见英文答案 > Enabling markdown highlighting in Vim5个答案当我在Vim中编辑包含Markdown代码的README.md并执行:set filetype?命令,我看到filetype = markdown。 Markdown语法高亮显示

但是当我在Vim中编辑包含Markdown代码的foo.md并执行:set filetype?命令,我看到filetype = modula2。 Markdown语法未正确突出显示

我应该添加到我的〜/ .vimrc以使Vim了解foo.md或任何扩展名为.md的文件一个markdown文件而不是modula2文件

问题的原因

要了解哪个脚本正在设置此文件类型,我在编辑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被编辑时,filetype设置为markdown,但是在编辑任何其他扩展名为.md的文件时,filetype设置为modula2。换句话说,* .md文件被识别为Modula-2源代码,但是对于README.md而言,它被识别为Markdown代码,这可能是由于在GitHub上README.md文件越来越受欢迎。

将以下语句添加到〜/ .vimrc以为所有.md文件设置filetype = markdown。

autocmd BufNewFile,BufRead *.md set filetype=markdown

该语句表示,当开始编辑不存在的新文件或者开始编辑新的缓冲区时,将文件读入缓冲区后,如果文件与* .md匹配,则设置filetype = markdown。

更新

在我现在的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,*.md  setf markdown
au BufNewFile,*.mi     setf modula2

ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.860的补丁似乎已经做出了这个改变。但是,对于我在Vim版本中可以看到补丁860中可用的这些更改有一些困惑,这些修补程序仅包含修补程序1-448,576。

相关文章

解决方案:解决linux下vim乱码的情况:(修改vimrc的内容)全...
Linuxvi/vim所有的UnixLike系统都会内建vi文书编辑器,其他的...
      vim正则匹配:空行:/^$/  /^[\t]*$/注释...
$select-editorSelectaneditor.Tochangelater,run'sele...
上次手贱忘了保存,这次就简单做个备忘吧,把踩过的坑记一下...
Linux之文本编译器小结vim的优势所有的UNIX-LIKE习通都会内置...