sublime自身带有markdown语法高亮功能,不过却没有markdown预览的功能,需要通过安装插件实现。装上了OmniMarkupPreviewer,发现按下快捷键Ctrl + Alt + O时弹出的浏览器窗口并没有出现预期的结果,而是报错404,于是去网上查了一下,总结了这几个办法。

浏览器里面看到的报错大致如下:

1Sorry, the requested URL 'http://127.0.0.1:51004/view/26' caused an error:
2
3'buffer_id(52) is not valid (closed or unsupported file format)'
4
5**NOTE:** If you run multiple instances of Sublime Text, you may want to adjust
6the `server_port` option in order to get this plugin work again.

按照提示是找不出原因的,不过翻了一下在github上issue找到两个解决办法,加上在其他地方找到的一个,总共三个,按照顺序都试一下,操作难度从易到难,不过最难的耗时也不过半分钟。

更改服务器或端口

404错误有可能是服务器地址或者端口出错,这两样可以在Preferences > Package Settings > OmniMarkupPreviewer > Settings - Default里面更改:

1// 原配置
2"server_host": "127.0.0.1",
3"server_port": 51004,
4
5// 更改后的配置
6"server_host": "0.0.0.0",
7"server_port": 52000,

并不确定是端口还是服务器地址的问题,所以可以一项项更改后看效果。

删除Strikethrough扩展

进入Preferences > Package Settings > OmniMarkupPreviewer > Settings - User 粘贴以下内容,然后保存。

1{
2    "renderer_options-MarkdownRenderer": {
3        "extensions": ["tables", "fenced_code", "codehilite"]
4    }
5}

网上不少人都是用这个方法解决的,看样子这个方法成功率比较高,不过对我没用,我这里生效的方法是第三个

修复Strikethrough扩展

要修复这个扩展需要先找到扩展的存放位置:

Mac

subl “/Users//Library/Application Support/Sublime Text 3/Packages/OmniMarkupPreviewer/OmniMarkupLib/Renderers/libs/mdx_strikeout.py”

Linux

~/.config/sublime-text-3/Packages/OmniMarkupPreviewer/OmniMarkupLib/Renderers/libs/mdx_strikeout.py

Windows平台就自己找了,文件是OmniMarkupPreviewer目录下的mdx_strikeout.py即可。

然后直接更改配置文件,将最后的

1def makeExtension(configs=None):
2    return StrikeoutExtension(configs=configs)

部分改为:

1def makeExtension(*args, **kwargs):
2    return StrikeoutExtension(*args, **kwargs)
3Save, quit and reload Sublime Text.

更改完后是这样的:

 1import markdown
 2from markdown.inlinepatterns import SimpleTagPattern
 3
 4
 5STRIKEOUT_RE = r'(\~\~)([^\s](?:.*))(\~\~)'
 6
 7
 8class StrikeoutExtension(markdown.Extension):
 9    """ Strikeout extension for Python-Markdown. """
10
11    def extendMarkdown(self, md, md_globals):
12        """ Modifies inline patterns. """
13        md.inlinePatterns.add('del', SimpleTagPattern(STRIKEOUT_RE, 'del'), '<not_strong')
14
15
16#def makeExtension(configs=None):
17#    return StrikeoutExtension(configs=configs)
18def makeExtension(*args, **kwargs):
19    return StrikeoutExtension(*args, **kwargs)