sublime-text

CNPunctuationAutopair:Sublime Text 2 中文标点自动配对插件

插件简介

Lucifr 很喜欢 Sublime Text 2, 也很喜欢 Octopress/Hexo 这样的静态博客,甚至折腾出一些 Workflow,以便在 Sublime Text 2 中写博客更为方便。

Sublime Text 2 有一个很不错的功能是可以自动配对成对的英文标点,比如 ""[](),只需输入成对标点的前半部分,就会自动补完后半部分,并把光标置于其中;此外,如果选中一段文本,按下前半部分,则会自动用成对标点把所选内容包围起来,写代码时非常方便。

但这只适用于英文标点,对中文标点则不起作用,用 Sublime Text 2 来写博客的 Lucifr 经常条件反射般的按下中文引号/括号。于是 Lucifr 研究了一下 Sublime Text 2 的默认 Key Bindings 设置文件,照猫画虎给中文的一些配对标点添加了支持,试了试,貌似可以用,于是弄成插件发布到 Github 并向 Package Control 发了 Pull request。于是就有了这个插件:CNPunctuationAutopair (中文标点自动配对)。

CNPunctuationAutopair 支持的配对标点

  • 全角单、双弯引号:“”‘’

  • 直角引号:「」『』

  • 全角括号:()

  • 书名号:《》

安装方法

  • 建议通过 Package Control 进行安装,搜索「CNPunctuationAutopair」即可。

  • 或是直接 git clone 这个 Repo 到 Sublime Text 2 的 Packages 文件夹。

使用方法

  1. 输入支持的成对中文标点的前半部分时,插件会自动配对并将光标置于其中1

  2. 选中文本后,按下成对中文标点的前半部分时,自动用相应成对标点包围所选内容。


  1. 自动配对在某些成对标点包围中时不会起作用,比如英文引号中是不会自动补全的,有需要的可以手动修改本插件。

Sublime Text 2 插件:PlainTasks

PlainTasks 这个插件将 TaskPaper 的任务列表功能带到了 Sublime Text 2 当中。

PlainTasks

PlainTasks 支持通过快捷键来添加任务、标记完成、归档,支持添加标签等等功能,且充分利用了 Sublime Text 2 的一些功能优势。

安装

PlainTasks 已经存在于 Package Control 列表中,通过 Package Control 搜索 PlainTasks 进行安装即可。

也可以手动 clone 源文件到 ~/Library/Application Support/Sublime Text 2/Packages 完成安装。

使用

在 Sublime Text 2 菜单中选择 Preferences > Package Settings > PlainTasks > Tutorial 可以打开英文教程。

以下为 Lucifr 翻译的该教程的中文版本(通过 RSS 阅读本文的读者可能无法看到以下代码,请到本文原文地址查看),你可以将其拷贝粘贴到 Sublime Text 2 中进行学习:

设置

在 Sublime Text 2 菜单中选择 Preferences > Package Settings > PlainTasks > Settings - User 可以打开 PlainTasks 的用户设置文件,在这里你可以对 PlainTasks 的一些选项进行自定义。

你可以打开 Settings - Default (默认设置文件)来查看可进行定义的选项,拷贝相应的选项到 Settings - User 中(注意格式!)进行修改来覆盖默认选项。

文件类型图标

此外,插件作者还为使用者提供了一枚 todo 文件类型专用的图标(icns | ico):

todo file type icon

My Blogging Workflow

Youku/Youtube

之前在 Twitter 上放出这段视频得到不少朋友的反馈,虽然 Jekyll 和 Octopress 算是小众,不过相信还是有些朋友会感兴趣的,因此花些时间写一写。

自从迁到 Octopress 之后,之前在 Wordpress 下的一些发布习惯都被迫要改动一下,虽然整个过程只要 Terminal 和文本编辑器就可以完成,但有些步骤还是太过繁琐,需要太多手动输入了。于是 Lucifr 便利用手头的一些工具软件(主要是 AlfredTextExpander)对流程中的一些步骤进行了简化,在此分享一下,因为纯粹是自己用的,所以全供大家借鉴,毕竟适合自己的才是最好的。

建立新文章

建立一篇新的 post,如果和 Lucifr 一样是使用 Octopress 的话,需要在终端里输入 rake post["<文章名>"],再到相应目录中找到新生成的文章并打开,过程过于繁琐。

我这里精简为一个 Alfred 的 Workflow 插件 New Post,只需要调出 Alfred 输入 po <文章名> 就可以自动生成新文章并同时用 Sublime Text 2 (文本编辑器)和 Marked (Markdown 呈现工具)打开且分左右排列窗口。

建立新的链接文章(Link Post)

Lucifr 在之前的文章中提到过 link post,著名的博客 Daring Fireball 是大量使用这一类型的代表。这个类型的文章的标题直接链接到外部的链接,而内容相对简短,用于进行推介等。Lucifr 在 Octopress 也引入了这一方式,只需要在 yaml 头部的信息中加入 external-url: <目标链接> 就可以达成了,但显然这也不够方便。

这一过程被我整合成了另一个插件 New Link Post,整体上是从上面的 New Post 上改动而来的,不同的是它会获取 Safari/Chrome 当前标签页的 URL 和标题(借鉴了 drdrangte-url-snippets),并自动填入 yaml 头部的 external-url 和 title 字段中,文章的文件名可以通过 Alfred 进行指定,如果没有指定则是用当前标签页的标题。这样当在浏览器中看到值得推介的内容时,直接调用 Alfred 就可以建立一篇新的链接文章了。

打开以往的文章

打开并编辑以往文章的过程用到了两个 Alfred 插件,一个是 Filter 类型的 Octopress Posts,可以通过 p <文章名> 对 octopress/source/_posts 中的文章进行筛选,按下回车后调用另一个 Workflow 插件 Open Post,后者就和之前的 New Post 差不多,只是用相应的软件打开并排列窗口。

以上三个插件在使用时请根据自己的情况进行修改。其中三个 Workflow 类型需要在 Alfred 的插件页面中找到对应的插件,在名字上点右键选择 “Show in Finder”,就可以定位到对应的 workflow 文件了。

Alfred Extension Show in Finder

你可能需要修改 Folder 这个变量所指向的 octopress 的目录位置,也可能会使用其它的 Markdown 编辑器(比如 Mou)或是不会用到 Marked,这些都可以通过修改 workflow 文件来完成。而 Octopress Posts 这个插件中只要在 Alfred 插件页面 Scope 那里修改 Octopress 的目录位置就可以了。

快速输入 Tag 和 Category

默认情况下 Octopress 只有 category(分类),不过 Lucifr 为了和之前的 Wordpress 保持一致还是加入了 tag(标签),这个 Github 上有相应的 fork 我就不缀述了。我所苦恼的是 tag 和 category 的输入。和 Wordpress 可以选择不同,Octopress 因为全是纯文本编辑,经常在 yaml 头中打错一个字母或是文字,这篇文章就变成了一个新的类/标签,每次还要确认有没有写错又是很麻烦的一件事,所以有了现在的这两个 TextExpander 脚本,都是用 AppleScript 实现的。

原理上很简单,在 rake generate 之后 Octopress 会在本地的 public 目录中生成 category/tag 目录,文章中的类和标签都以文件夹的形式存在,这两个脚本就是获取这些文件夹的名称并生成一个选择菜单,选择相应的类/标签(可多选)后按下 OK 就会自动展开成所需的格式了(当然像是 Lucifr 这样 tag 太多的情况这么搞也不算方便,抛砖引玉算是)。

同样,你需要在 TextExpander 中修改 thePath 变量所指向的目录位置。

Status 和 Push

另外两个 shell 脚本类的插件就很简单了:

  • Git Status 用来通过 Growl 显示 Octopress 的文件状态。
  • Push 这个插件可能不适用于其它的 Octopress 使用者,除非你和 Lucifr 一样把生成过程放到了远端的服务器上,我只需在 Alfred 中输入 push <commit 信息> 它就会帮助我完成 add、commit 和 push 的过程,而远端的服务器则完成之后的生成静态页面的过程,并同样通过 Growl 输出结果(当然因为生成时间比较长,这个结果返回的时间也会长一些)。

总之吧

还是要重复一下开头的话,这些插件脚本什么的都像是自制工具,可能只适合 Lucifr 自己用,分享出来只是为了和大家交流借鉴,因此不提供技术支持、售后服务什么的,各位对哪个部分不满意完全可以自行修改,不用客气。

若嫌一个个下载太麻烦,可以直接 clone 这个 repo:my-blogging-workflow

MarkdownEditing:Sublime Text 2 的 Markdown 利器

毫无疑问,MarkdownEditingBrett Terpstra 的又一个杰作,这个插件使得在 Sublime Text 2 里写 Markdown 变成一件很惬意的事。

功能特性

MarkdownEditing 从视觉和便捷性上针对 Markdown 文档的编辑进行了一系列的优化。具体如下:

  • 安装后针对 md\mdown\mmd\txt 格式文件启用插件。颜色方案仿 Byword 及 iA writer。
  • 自动匹配星号(*)、下划线(_)及反引号(`),选中文本按下以上符号能自动在所选文本前后添加配对的符号,方便粗体、斜体和代码框的输入。
  • 直接输入配对的符号后按下退格键(backspace),则两个符号都会被删除;直接输入配对的符号后按下空格键,则会自动删除后一个。
  • 对“选中文字后输入左括号”这一动作进行了调整,以便插入 markdown 链接。
  • 拷贝一个链接,选中文本后按下 ⌘⌥V 会自动插入内联链接。
  • 拷贝一个链接,选中文本后按下 ⌘⌥R 会自动插入引用链接。
  • ⌘K 插入链接;⌘⇧K 插入图片。
  • ⌘B⌘I 分别用于加粗体和斜体。
  • 选中文本后按下 # 会自动在文本前后进行配对,可重复按下来定义标题级别,还可用 ⌘⇧空格 来增加 # 与所选文本之间的空格(也是自动配对的)。

安装方法

  • 如果安装了 Package Control,可以通过添加 repository,输入 http://github.com/ttscoff/MarkdownEditing,然后在 Install Package 里找到 MarkdownEditing。(Brett 已经提交了 Package Control 的申请,不久就应该能直接装了)
  • 当然也可以手动 Clone 这个 repo~/Library/Application Support/Sublime Text 2/Packages

配置

有些快捷键可能与系统的一些发生冲突,可以编辑 ~/Library/Application Support/Sublime Text 2/Packages/MarkdownEditing/Default (OSX).sublime-keymap 改掉。

另外还有一些设置可以在 ~/Library/Application Support/Sublime Text 2/Packages/MarkdownEditing/Markdown.sublime-settings 中进行修改。

比如除了默认的颜色主题外,MarkdownEditing 还提供了一个高亮显示编辑行 MarkdownEditor-Focus,就可以在 Markdown.sublime-settings 这个文件中找到并去掉注释保存生效。

此外也可以添加一些自己的设置,比如 Lucifr 就喜欢可以“滚动超过最后一行”,那么就可以在其中添加 "scroll_past_end": true,