Sublime Text 3自定義插件

http://docs.sublimetext.info/en/latest/extensibility/plugins.html
https://clarknikdelpowell.com/blog/creating-sublime-text-3-plugins-part-1/

Sublime Text 3 (ST3) 作為我工作之后的唯一編輯器, 已經徹底征服了我的心,它非凡的性能變現(xiàn)以及眾多插件的擴展性,已經讓我欲罷不能了.每一個獨特功能的插件都加速了我的日常工作,這使我萌生了自定義插件的想法.

關于插件

ST3的插件以文件的形式組織,它會在3個目錄搜索插件:

  • Installed Packages
  • Packages
  • Packages/pkg_name/

但是如果Packages下文件嵌套太深,插件將不會被load
另外,ST3 的插件是已Python編寫的,這要求你需要知道如何使用Python3

自定義插件

環(huán)境

  • x86_64 GNU/Linux
  • Sublime Text 3
  • Python 3+

添加插件

首先新建一個插件

  1. 點擊 Perferences -> Browse Packages..., 在打開的文件夾下面新建一個目錄:Mike;
  2. 點擊 Tools -> New Plugin...,將文件保存到插件目錄 Mike 下面,取名為: mike.py, 修改文件內容如下:
import sublime, sublime_plugin

class MikeCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        self.view.insert(edit, 0, "Hello, World!")
  1. 使用 Ctrl + ` 打開 ST3 的命令行,輸入:
view.run_command("mike")

如果成功在當前文件下看到 Hello, World! 表示插件已經添加成功

插件命令的解析規(guī)則很簡單, 命令名稱 + Command 構成class, 當然這里的命令名稱是首字母大寫的,但是執(zhí)行的時候會轉化為小寫的,例如:
class MikeWangCommand 所對應的命令是: mike_wang

為插件添加快捷鍵

在插件的目錄Mike下面新建文件: Default (Linux).sublime-keymap,
表示在Linux下面的快捷鍵設置,當然也可以為不同平臺指定快捷鍵,具體支持如下:

  • Default (Windows).sublime-keymap
  • Default (OSX).sublime-keymap
  • Default (Linux).sublime-keymap

其內容如下:

[
    {
        "keys": [
            "ctrl+alt+k"
        ],
        "command": "mike"
    }
]

文件內容必須是一個json格式的數組, keys表示快捷鍵的組合方式, command則表示所要執(zhí)行的命令.

為插件添加菜單

ST3支持3種類型的菜單:

  • Main.sublime-menu
    既所謂的頂部菜單,位于ST3菜單欄具體菜單下
  • Side Bar.sublime-menu
    側邊欄菜單,當在側邊欄右鍵時彈出
  • Context.sublime-menu
    當在文字區(qū)域內右鍵是彈出的上下文菜單

這里我定義了3中菜單:
Main.sublime-menu, 內容如下:

[
  {
    "id": "tools",
    "children": [
      {
        "caption": "Mike Wang",
        "id": "mike",
        "command": "mike"
      }
    ]
  }
]

效果為:在菜單欄Tools下面有一個 Mike Wang的菜單項

Side Bar.sublime-menu, 內容如下:

[
  {
    "caption": "Mike Wang",
    "command": "mike"
  }
]

效果為:在側邊欄右鍵是可以看到一個 Mike Wang的菜單項

Context.sublime-menu, 內容如下:

[
  {
    "id": "mike",
    "command": "mike",
    "caption": "Mike Wang"
  }
]

效果為:在文字區(qū)域右鍵有一個 Mike Wang的菜單項

很明顯,這些文件都是以 json 數組的形式組織的,其內容表現(xiàn)為:

  • id
    每一個菜單項的唯一標識
  • caption
    相當于菜單的一個展示名稱,所看到的效果
  • command
    大小寫敏感,所要執(zhí)行的命令
  • children
    用于定義子菜單

總結

到這里,一個簡單的 ST3 插件就定義完畢,這里只是表現(xiàn)了一個插件的組織結構,并不具備什么有用的功能,因為這里并沒有結合 ST3API . 但千里之行始于足下,具備了完整的結構才可以繼續(xù)開展壯大起來.

更多技術細節(jié):

http://www.sublimetext.com/docs/3/api_reference.html
http://www.sublimetext.com/docs/api-reference
http://docs.sublimetext.info/en/latest/reference/reference.html

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容