Wednesday, October 30, 2013

Sublime Text 3 插件开发 (未完)

Sublime Text (以下简称ST)提供了一个python的API接口. 在这个接口之上,用户可以开发自己的插件. 完整的ST3 API可以参见这里
如果你想仔细研究这些API的定义以及ST自带Python模块的细节, 可以在ST下找到这个python API的文件. MacOS上, 在/Applications/Sublime Text.app/Contents/MacOS/目录底下, 有2个文件 sublime.pysublime_plugin.py.

从一个最简单的plugin开始


import sublime, sublime_plugin
class HelloWorldCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        self.view.insert(edit, 0, "Hello, World!")
将其命名为"hello_world.py"以后, 存在Packages/User底下. 这个plugin就只干一件事儿, 当你在ST3自带的python console里(可以通过Ctrl+`呼出)运行
view.run_command("hello_world")
就会在你正在编辑的文件里添加一段"Hellow, World!". 这里注意ST的命名习惯. 这个类的名字叫HellowWorld, console中ST会将其命名为hellow_world, 从而使用run_command("hello_world")来运行之.

Sunday, October 13, 2013

在Sublime Text 3 中使用emacs键位

我的目标很简单: 就是把sublime text的操作折腾的和emacs 一样

第一步, 安装sublemacspro.


参见这里: https://github.com/grundprinzip/sublemacspro
基本上最基本的emacs操作比如ctrl-w, alt-w, ctrl-k, ctrl-y 等就有了.

第二步, 增加一些我自己管用的keybinding

我是通过定制PreferencesKey->Binding->User来增加以下我自己习惯的键位:
[
 { "keys": ["ctrl+f"], "command": "move", "args": {"by": "pages", "forward": true} },
 { "keys": ["ctrl+b"], "command": "move", "args": {"by": "pages", "forward": false} },
 { "keys": ["shift+ctrl+f"], "command": "move", "args": {"by": "pages", "forward": true, "extend": true} },
 { "keys": ["shift+ctrl+b"], "command": "move", "args": {"by": "pages", "forward": false, "extend": true} },

 { "keys": ["alt+down"], "command": "move", "args": {"by": "stops", "empty_line": true, "forward": true} },
 { "keys": ["alt+up"], "command": "move", "args": {"by": "stops", "empty_line": true, "forward": false} },
 { "keys": ["shift+alt+down"], "command": "move", "args": {"by": "stops", "empty_line": true, "forward": true, "extend": true} },
 { "keys": ["shift+alt+up"], "command": "move", "args": {"by": "stops", "empty_line": true, "forward": false, "extend": true} },

 { "keys": ["ctrl+c", "ctrl+c"], "command": "build"},
]

参考:

关于key binding 的commands
http://www.sublimetext.com/docs/commands
如何写一个plugin
http://sublimetext.info/docs/en/extensibility/plugins.html
st3的api
http://www.sublimetext.com/docs/3/api_reference.html