语法高亮

Sublime Text 内置 Markdown 文档的语法高亮, 只是默认的太挫了...

Monokai ExtendedMarkdown Extended 是一套解决方案.

安装完两个插件后, 首先在 [首选项] -> [主题方案] 里设置 Monokai Extended, 然后, 打开一个 *.md 文件, 在 Sublime 右下角显示文件语法那里点击选择 [打开具有当前扩展名的] -> [Markdown Extended], 或者在 [查看] -> [语法] -> [打开具有当前扩展名的] -> [Markdown Extended], 这样就将 *.md 文件与 Markdown Extended 关联起来了.

智能补全

Markdown Editing 插件

Markdown Editing 也自带三种配色方案, 不过嘛, 略丑, 还是用 Monokai Extended 和 Markdown Extended 的好.

Markdown Editing 常用功能如下:

不过我用反引号时, 都是用三个反引号来指定编程语言, 单反引号貌似不能指定语言, 所以改了下 Markdown Editeing 的快捷键, [首选项] -> [插件设置] -> [Markdown Editing] -> [Key Bindings -- User]

    {
        "keys": ["`"], "command": "insert_snippet", "args": {"contents": "```$0\n```\n<br>"}, "context":
        [
             { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
             { "key": "selection_empty", "operator": "equal", "operand": true, "match_all": true },
             { "key": "following_text", "operator": "regex_contains", "operand": "^(?:\t| |\\)|]|\\}|$)", "match_all": true },
             { "key": "preceding_text", "operator": "not_regex_contains", "operand": "['a-zA-Z0-9_`]$", "match_all": true },
             { "key": "eol_selector", "operator": "not_equal", "operand": "string.quoted.single", "match_all": true },
             { "key": "selector", "operator": "equal", "operand": "text.html.markdown", "match_all": true }
        ]
    },

    {
        "keys": ["`"], "command": "insert_snippet", "args": {"contents": "```\n${0:$SELECTION}\n```"}, "context":
        [
            { "key": "setting.auto_match_enabled", "operator": "equal", "operand": true },
            { "key": "selection_empty", "operator": "equal", "operand": false, "match_all": true },
            { "key": "selector", "operator": "equal", "operand": "text.html.markdown", "match_all": true }
        ]
    },



另外, Shift + Win + K 插入图片快捷键和输入法有点冲突, 我们改成 ctrl + super + k, 一样的打开 [Key Bindings -- User]

    {
        "keys": ["ctrl+super+k"], "command": "reference_new_inline_image", "context":
        [
            { "key": "selector", "operator": "equal", "operand": "text.html.markdown", "match_all": true }
        ]
    },



最后, Markdown Editing 默认的粗体和斜体是用下划线控制的, 在 pelican 中转化成貌似有点问题, 所以改成了 *, [首选项] -> [插件设置] -> [Markdown Editing] -> [Bold and Italic Settings -- User]:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>name</key>
    <string>Bold and Italic Markers</string>
    <key>scope</key>
    <string>text.html.markdown</string>
    <key>settings</key>
    <dict>
        <key>shellVariables</key>
        <array>
            <dict>
                <key>name</key>
                <string>MD_BOLD_MARKER</string>
                <key>value</key>
                <string>**</string>
            </dict>
            <dict>
                <key>name</key>
                <string>MD_ITALIC_MARKER</string>
                <key>value</key>
                <string>*</string>
            </dict>
        </array>
    </dict>
    <key>uuid</key>
    <string>E3F0F1B0-53C8-11E3-8F96-0800200C9A66</string>
</dict>
</plist>


表格辅助

TableEditor: Markdown 中的表格书写体验真心不咋样, 所有有人为这个开发了一个插件, 具有较好的自适应性, 会自动对齐.

首先需要用 ctrl + shift + p 打开这个功能:

常用方法:

输入下面的样式

| Name | Phone |
|-

按 tab 键

| Name | Phone |
|------|-------|
| _    |       |

使用 tab 切换字段, 按 enter 新建新行


输入下面的样式

|Name|Phone

按 ctrl + k, enter (注意是先按 ctrl + k, 按完后再按 enter)

| Name | Phone |
|------|-------|
| _    |       |

行列操作

alt + shift + up 删除当前行

alt + shift + down 在当前行上面新建一行

alt + up/down 上下移动行

alt + shift + left 删除当前列

alt + shift + right 在当前列左边新建列

alt + right/left 左右移动列

预览

OmniMarkupPreviwer 可以实时在浏览器中预览

还有个 Markdown Preview 插件也是可以预览 md 文件, 但是需要手动生成 + F5 的, 所以感觉用起来比较麻烦.

OmniMarkupPreviwer 的默认配置已经满足日常需求了, 不过可以在配置文件中把 toc 打开, 这样就可以生成目录了.

"extensions": ["tables", "strikeout", "fenced_code", "codehilite", "toc"] // 这是 OmniMarkupPreviwer 配置文件的最后一行

插入文件头

我们使用 Pelican 时, 要在每个 md 文件中添加文件头, 格式大概如下:

Title: Git 简明手册
Author: Martin
Date: 2016-03-13 13:00
Summary: Git 学习笔记, 记录一些常用的操作, 以及 SourceTreeGithub 的用法.

使用 sublime 提供的 code snippet 可以方便的完成添加操作.

"工具"->"新代码片段":

<snippet>
    <content><![CDATA[
Title: ${1}
Author: Martin
Date: ${2}
Summary:

${3}
]]></content>
    <!-- Optional: Set a tabTrigger to define how to trigger the snippet -->
    <tabTrigger>md</tabTrigger>
    <!-- Optional: Set a scope to limit where the snippet will trigger -->
    <!-- <scope>source.python</scope> -->
</snippet>



保存文件, 取名为 title-code.sublime-snippet, 此时, 在文本中, 输入 md, 然后按 tab 键, 就可以直接输入我们的文件头了.

插入时间

在我们上一步的操作中, 我们还要手写时间, 这也比较麻烦, sublime 也没有提供直接的方法来插入时间, 不过还好, sublime 可以用插件的方式来扩展功能.

"工具"->"新插件":

import datetime
import sublime, sublime_plugin

class AddCurrentTimeCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        self.view.run_command("insert_snippet",
            {
                "contents": "%s" % datetime.datetime.now().strftime("%Y-%m-%d %H:%M")
            }
        )

保存为 add_current_time.py, 然后打开用户的按键绑定设置, 在后添加一个新快捷键:

// 插入时间
{
    "keys": ["ctrl+shift+."], "command":"add_current_time",
},