1. 程式人生 > >sublime自定義補全關鍵字 匯出工具

sublime自定義補全關鍵字 匯出工具

sublime是指令碼開發編輯器中比較方便的,我做Lua開發也是用sublime來做編輯器的。 sublime的自動補全功能也還行, 但是對於全域性的函式不會自動輸出,那麼是否可以設定自動補全的關鍵字呢? 我在網上找了很久沒有找到,沒有找到解決的辦法, 只找到了Snippets(程式碼片段)功能。 Snippets具體用法可以參考一下: 新建一個Snippets
1 2 3 4 5 <snippet> <content><![CDATA[LogDebug]]></content> <tabTrigger>ld</tabTrigger> <scope>source.lua</scope> </snippet>
儲存在sublime配置的路徑\User\LogDebug.sublime-snippet 之後開啟一個lua檔案,輸入ld,ok可以了

clipboard.png

不過Snippets一次只能配一個, 要配置多個關鍵字有些麻煩,所以我開發了這個軟體, 用lua寫的,只需要填寫關鍵字及對應縮寫詞就ok,直接按批處理批量匯出Snippets檔案。 先看下程式碼
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 local PROGRAM_LOG_PATH = "C:\\Users\\使用者名稱\\AppData\\Roaming\\Sublime Text 3\\Packages\\User\\" local SNIPPET_TEXT = "<snippet>\n\t<content><![CDATA[%s]]></content>\n\t<tabTrigger>%s</tabTrigger>\n\t<scope>source.%s</scope>\n</snippet>" -- 配置關鍵詞
local sublimekey = {} table.insert(sublimekey, {key = "ld",    content = "LogDebug",    scope = "lua"}) table.insert(sublimekey, {key = "li",    content = "LogInfo",    scope = "lua"}) table.insert(sublimekey, {key = "lw",    content = "LogWarning",    scope = "lua"}) table.insert(sublimekey, {key = 
"le",    content = "LogError",    scope = "lua"}) table.insert(sublimekey, {key = "con",    content = "console.log()",    scope = "js"}) for k,v in pairs(sublimekey) do local config = sublimekey[k] CreateLogFile(config.content, PROGRAM_LOG_PATH ,config.content..".sublime-snippet" , 0) local msg1 = string.format(SNIPPET_TEXT, config.content, config.key, config.scope) WriteLog(config.content, msg1) CloseLogFile(config.content) end
我們只需要改一下sublime配置的路徑 local PROGRAM_LOG_PATH = "C:\\Users\\使用者名稱\\AppData\\Roaming\\Sublime Text 3\\Packages\\User\\" 
以及關鍵字配置 -- 配置關鍵詞 local sublimekey = {} table.insert(sublimekey, {key = "ld",    content = "LogDebug",    scope = "lua"}) table.insert(sublimekey, {key = "li",    content = "LogInfo",    scope = "lua"}) table.insert(sublimekey, {key = "lw",    content = "LogWarning",    scope = "lua"}) table.insert(sublimekey, {key = "le",    content = "LogError",    scope = "lua"}) table.insert(sublimekey, {key = "con",    content = "console.log()",    scope = "js"}) 這裡scope 欄位是要觸發的檔案型別,key為快捷縮寫,content為要輸出的關鍵字內容。

執行start.bat(需要安裝luaforwindows)執行,然後到sublime的配置目錄看下, 正常生成對應的sublime-snippet檔案就說明成功了。現在可以用sublime試一下自動補全的關鍵字了。。。。

另外配合sublime原有的外掛All AutoComplete使用,感覺挺方便的 。
PS:All AutoComplete 可以讓程式碼自動完成的匹配從所有開啟的檔案裡去匹配,而不是隻在當前檔案裡匹配。 所以用All AutoComplete開發某個特定模組已經可以基本滿足需求了。而我用工具導的介面則適用於全域性性的介面, 如上面寫的Log模組介面等等。。。。


from: http://www.oschina.net/question/160933_2146993