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)