sublime自定义补全关键字 导出工具

谢焕标 发布于 2015/12/29 09:29
阅读 1K+
收藏 0

 


sublime是脚本开发编辑器中比较方便的,我做Lua开发也是用sublime来做编辑器的。
sublime的自动补全功能也还行, 但是对于全局的函数不会自动输出,那么是否可以设置自动补全的关键字呢?
我在网上找了很久没有找到,没有找到解决的办法, 只找到了Snippets(代码片段)功能。

Snippets具体用法可以参考一下:

新建一个Snippets

<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文件。

先看下代码

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模块接口等等。。。。

转自:http://geek.iyplay.com/?id=41

加载中
返回顶部
顶部