当我在Vim中编辑包含Markdown代码的README.md并执行:set filetype?命令时,我明白了filetype=markdown.Markdown语法正确突出显示.
但是当我在Vim中编辑包含Markdown代码的foo.md并执行:set filetype?命令时,我明白了filetype=modula2.Markdown语法未正确突出显示.
我应该添加到我的〜/ .vimrc使Vim明白foo.md或扩展名的任何文件.MD是降价文件,而不是modula2文件?
Sus*_*Pal 37
要了解哪个脚本正在设置此文件类型,我在编辑foo.md后执行了以下命令.
:verbose set filetype?
Run Code Online (Sandbox Code Playgroud)
我找到了以下输出.
filetype=modula2
Last set from /usr/share/vim/vim74/filetype.vim
Run Code Online (Sandbox Code Playgroud)
在/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
Run Code Online (Sandbox Code Playgroud)
这些行显示当编辑README.md时,文件类型设置为markdown但在编辑扩展名为.md的任何其他文件时,文件类型设置为modula2.换句话说,*.md文件被识别为Modula-2源代码,但README.md例外,因为它被识别为Markdown代码,可能是由于GitHub上的README.md文件日益普及.
将以下语句添加到〜/ .vimrc以set filetype=markdown获取所有.md文件.
autocmd BufNewFile,BufRead *.md set filetype=markdown
Run Code Online (Sandbox Code Playgroud)
该声明表示,当开始编辑不存在的新文件或开始编辑新缓冲区时,在将文件读入缓冲区后,如果文件与模式匹配*.md则set 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,BufRead *.markdown,*.mdown,*.mkd,*.mkdn,*.mdwn,*.md setf markdown
au BufNewFile,BufRead *.m2,*.DEF,*.MOD,*.mi setf modula2
Run Code Online (Sandbox Code Playgroud)
ftp://ftp.vim.org/pub/vim/patches/7.4/7.4.860上的补丁似乎已经做出了这一改变.但是,我对我的Vim版本中可用的补丁860中似乎可用的这些更改感到有点困惑,其中仅包含补丁1-448,576.
另一个答案是正确的,但不完整.为了使Save As… :sav命令同样适用,需要使用以下命令扩展自动命令BufFilePre:
autocmd BufNewFile,BufFilePre,BufRead *.md set filetype=markdown
Run Code Online (Sandbox Code Playgroud)
指定Markdown风格也可能很有趣,比如Pandoc:
autocmd BufNewFile,BufFilePre,BufRead *.md set filetype=markdown.pandoc
Run Code Online (Sandbox Code Playgroud)
请注意,Vim目前只允许指定一种风味.
| 归档时间: |
|
| 查看次数: |
9821 次 |
| 最近记录: |