在Vim中启用Markdown突出显示


138

我在装有OS X Lion的MacBook Air的终端中使用Vim,但似乎找不到适合Markdown语法突出显示的好插件。

到目前为止,我已经尝试了plasticboy插件和Tim Pope的插件。plasticboy插件工作正常,但导致行尾的空白突出显示,我还没有弄清楚如何关闭它。(这确实很烦人,因为每当space我在写作时按一下,都会突出显示该字符。)

Tim的插件似乎并没有在突出显示方面做很多事情,除了使用的标头###。代码块和项目符号将被忽略。我可能在那里丢失了一些东西。我确实.md在Markdown文件上使用了扩展名,因此它应该是文件类型。

我还看到了对内置了Markdown支持的Vim 7.3的引用,但是如果没有这两个插件之一,我根本就不会突出显示任何内容。

这些都需要使用特定的配色方案吗?


24
*.md不是markdown的正确扩展名。那是用于模数文件。Tpope插件可以正常工作(所有这些插件都可以正常工作)您应该使用*.markdown扩展名
lucapette 2012年

7
@lucapette蒂姆教皇的插件ftdetect 确实还包括*.md,连同:*.markdown,*.mdown,*.mkd,*.mkdn。plasticboy插件仅自动检测*.mkd,*.markdown,*.mdwn
pb2q 2012年

1
从plasticboy插件来源看来,它实际上也确实可以检测到.md。我现在被锁定在此扩展程序中是因为我在博客中使用了Scriptogr.am,这是他们目前唯一识别的扩展程序。
乔什·厄尔

1
刚刚发现了这一点,对于github风味的markdown来说简直就是摇滚:github.com/jtratner/vim-flavored-markdown
Matthew Turner

对于plasticboy / vim-markdown的问题,请在项目中打开问题,以便开发人员可以解决。我发现高修饰尾随空格是一个好的行为,因为双空格会生成<br>标签,因此应使作者意识到这一点。
Ciro Santilli郝海东冠状病六四事件法轮功2015年

Answers:


22

当使用plasticboy mkd插件时,这应该可以禁用行尾空格突出显示:

:syn clear mkdLineBreak

您可以autocmd为必要的文件扩展名设置文件,这样就不必每次加载markdown文件时都这样做。

请注意,存在此特定的突出显示是因为Markdown通过插入来特别对待以2个或更多空格字符结尾的行<br>,因此它很有用。

插件使用plasticboy TODO强调这条规则,这一个有点因为它的设计太多,默认情况下,是真扎眼-黄色背景-使之脱颖而出。您可以通过更改highlight规则来减少视觉冲击。一种快速的方法是:

:hi link mkdLineBreak Underlined

现在,这些行尾空格将显示为带下划线。尝试链接到其他highlight组,以获得可能更吸引您的东西。link您可以使用自己的highlight命令,指定自定义ctermfgctermbgguifg,而不是使用这些行尾空格来更具体:例如,您可以指定它们比普通背景稍微亮/暗。,guibg设置。

如上所述,您可以autocmd应用特定设置。

有关链接highlight组的更多信息,请键入::help group-name并且您将看到可以链接的组列表,这些组本身应使用其当前highlight规则来显示。另外::help highlight


2
这很有意义。没意识到在Markdown中两个空格很重要。我认为除非它一直困扰着我,否则我将保持启用状态。谢谢!
乔什·厄尔

是的,这就是为什么要在输入2个空格后才突出显示高光的原因。
pb2q 2012年

@ josh-earl使用
plasticboy

308

关于markdown的本机语法突出显示,我认为.markdown默认情况下它仅适用于带有扩展名的文件。
我的.md文件的markdown语法高亮显示出现问题。
我试过了:

:set syntax=markdown

而且有效。所以我在我的内容中加入了以下内容.vimrc

au BufNewFile,BufFilePre,BufRead *.md set filetype=markdown

现在,我的vim突出显示了.md文件的语法。

BufFilePre 对于:sav必需的


13
对于任何其他阅读本文的人:是的,它可以工作,并且比安装插件要简单得多。从命令行执行此操作的快速方法:echo“ au BufRead,BufNewFile * .md set filetype = markdown” >> .vimrc
RobinLovelace

11
在我看来,这应该是公认的答案。
Enrico Campidoglio 2014年

4
@SamStoelinga这不是错误,.mdModula也使用它。检测要使用哪一个将需要一些高级试探法。
nyuszika7h 2014年

8
从Vim 7.4.480开始,*.md默认情况下将文件识别为Markdown。
fwalch 2015年

1
正确,但不完整。为了使此Save As… :sav命令同样有效,需要将自动命令扩展为BufFilePreautocmd BufNewFile,BufFilePre,BufRead *.md set filetype=markdown
Serge Stroobandt,2015年

19

本机语法突出显示

默认情况下,Markdown的本机语法突出显示仅适用于.markdown文件扩展名。

下面的行.vimrc对于vim和均产生最佳结果gvim

autocmd BufNewFile,BufFilePre,BufRead *.md set filetype=markdown.pandoc

说明:

1.指定您的Markdown风味!

如果您主要使用Markdown的一种口味(例如Pandoc),请务必也提及这一点!这样,就可以混合和匹配Markdown和Pandoc专用的Vim插件。例如:我发现vim-pandoc-syntax插件特别适合我的突出显示需求。不过,我将更通用的vim-markdown-folding用于Markdown折叠。

顺便说一句,只允许一种味道,用点分隔,例如: filetype=markdown.pandoc

2. gvim要求BufFilePre

gvimBufFilePre在自动命令行中需要附加命令以使用该Save As… :sav命令识别Markdown文件类型。



7

如果您不喜欢将所有配置都放在中~/.vimrc,则可以~/.vim/ftdetect/markdown.md使用以下内容创建(或在Windows中等效)。

au BufNewFile,BufRead *.md setf markdown

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.