首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何让Vim理解*.md文件包含的是Markdown代码,而不是Modula 2代码?

如何让Vim理解*.md文件包含的是Markdown代码,而不是Modula 2代码?
EN

Stack Overflow用户
提问于 2014-04-25 04:38:00
回答 2查看 13.9K关注 0票数 29

当我在Vim中编辑包含Markdown代码的README.md并执行:set filetype?命令时,我看到了filetype=markdown。Markdown语法已正确突出显示。

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

我应该在我的~/.vimrc中添加什么来使Vim理解foo.md或任何扩展名为.md的文件是标记文件而不是modula2文件?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-04-25 04:38:00

问题的原因

为了了解是哪个脚本设置了这个文件类型,我在编辑foo.md之后执行了以下命令。

代码语言:javascript
复制
:verbose set filetype?

我发现了以下输出。

代码语言:javascript
复制
  filetype=modula2
        Last set from /usr/share/vim/vim74/filetype.vim

在/usr/share/vim/vim74/filetype.vim中,我发现了以下行。

代码语言:javascript
复制
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上越来越流行。

解决方案

对于所有.md文件,将以下语句添加到~/.vimrc to set filetype=markdown

代码语言:javascript
复制
autocmd BufNewFile,BufRead *.md set filetype=markdown

此语句说明,当开始编辑不存在的新文件或开始编辑新缓冲区时,在将文件读入缓冲区后,如果文件与模式*.md匹配,则执行set filetype=markdown

更新

在我现在使用的Vim的更新版本中,我发现这个问题已经不存在了。

代码语言:javascript
复制
$ 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的补丁似乎已经做出了这样的改变。然而,我有点困惑的是,这些似乎在补丁860中可用的更改如何在我的Vim版本中可用,我的Vim版本只包括补丁1-448,576。

票数 39
EN

Stack Overflow用户

发布于 2014-11-23 08:39:22

更完整的答案,带Markdown风格

另一个答案是正确的,但不完整。要使其与Save As… :sav命令同等地工作,需要使用BufFilePre扩展自动命令

代码语言:javascript
复制
autocmd BufNewFile,BufFilePre,BufRead *.md set filetype=markdown

Pandoc一样,specify a Markdown flavour也可能对此很感兴趣

代码语言:javascript
复制
autocmd BufNewFile,BufFilePre,BufRead *.md set filetype=markdown.pandoc

请注意,Vim目前只允许指定一种风格。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23279292

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档