大家好,我是阿赵。
现在很多手游项目使用lua作为热更新的代码脚本,我一直很喜欢用Sublime来写lua程序。喜欢使用它的原因是它的轻量化,因为我经常要同时打开多个项目,Unity和VisualStudio这些软件都比较占用电脑的性能,很多时候会莫名的卡死机。而Sublime打开后占用系统资源不多,打开速度比较快,而功能也比较够用。
使用的版本,建议是Sublime3的最新版,会多了跳转功能和页签滚动。
这里简单的介绍一下用法:
通过OpenFolder菜单,可以打开一个文件夹。一般来说,就和VS打开一个项目有点类似,可以在项目内进行类的查找、方法查找、跳转、查看引用等操作。
不过由于打开的文件里面可能会有一些我们不需要的文件,比如Unity引擎自动生成的meta文件,这时候可以设置过滤掉它。
在菜单找到Settings,然后打开
在左边搜索file_exclude_patterns,会发现原来也有一些过滤的扩展名设置
{
"file_exclude_patterns": ["*.pyc", "*.pyo", "*.exe", "*.dll", "*.obj","*.o", "*.a", "*.lib", "*.so", "*.dylib", "*.ncb", "*.sdf", "*.suo", "*.pdb", "*.idb", ".DS_Store", ".directory", "desktop.ini", "*.class", "*.psd", "*.db", "*.sublime-workspace","*.meta"],
}
这样搜索的时候,就不会再匹配到meta文件了。
查找功能的用法很简单,如果想在当前的文件里面查找,快捷键就是Ctrl+F。
如果要在打开的整个文件夹里面查找,快捷键是Ctrl+Shift+F。
Sublime有很多跳转功能,在Goto菜单栏可以查看得到。
或者Ctrl+Shift+R,可以搜索整个文件夹里面所有代码里面的方法名
自Sublime3某个版本开始,支持了代码的跳转,类似于VS那样,在调用方法的地方按F12可以跳转到该方法。还可以把鼠标悬停在方法上,看哪里调用了这个方法。这个功能Sublime2是没有的,如果你在用Sublime也没有发现这个功能,可以用Sublime自带的更新功能,把版本更新到最新就行。
如果想按着Ctrl键然后鼠标点击方法名来跳转,可以这样做:
在Preferences菜单下找到Browse Packages:
在打开的目录里面,找到Default.sublime-mousemap文件,如果没有这个文件,就自己新建一个txt文件,然后改成这个名字。
在这个文件里面输入以下内容:
Default.sublime-mousemap
[
{
"button": "button2",
"count": 1,
"modifiers": ["ctrl"],
"command": "jump_back"
},
{
"button": "button3",
"count": 1,
"modifiers": ["ctrl"],
"command": "jump_forward"
},
{
"button": "button1",
"count": 1,
"modifiers": ["ctrl"],
"press_command": "drag_select",
"command": "goto_definition"
}
]
这里的button1是鼠标左键,button2是鼠标右键,button是鼠标中键。
我这里实现的功能是,按着ctrl键再按鼠标左键,就执行了goto_definition操作,也就是相当于F12。然后加多一个press_command用于drag_select操作,也就是拖动选择文字。如果不加这个,按着ctrl的时候就不能框选文字了。
然后按着ctrl键再按鼠标右键,是执行了jump_back操作,意思是跳到上一个操作的位置。
按着ctrl键再按鼠标中键,是执行了jump_forward操作,意思是跳到下一个操作的位置。
这样设置了之后,就可以通过鼠标来执行跳转,不需要按F12跳方法,也不需要用默认的Alt+减号键来跳转上一个操作了。
用Sublime来写lua,可以通过预编译功能来检查语法错误:
比如我这个代码里面写少了一个end,就会提示某个类的哪一行,因为什么原因而报错
想使用这个功能,电脑上面先装一个Lua环境,我这里装了一个不是最新的版本:
装好之后,在cmd命令行控制台输入lua,应该可以看到lua版本
如果不行,就设置一下环境变量path,加入lua的安装路径。
然后回到Sublime,在Tools/BulidSystem里面找到Lua:
再到想检查的lua文件,按Ctrl+B,就能预编译了。
如果在BuildSystem里面没有找到Lua,也可以自己新建一个:选择New Build System
然后在新建的文件里面输入
{
"cmd": ["lua", "$file"],
"file_regex": "^(?:lua:)?[\t ](...*?):([0-9]*):?([0-9]*)",
"selector": "source.lua"
}
再次尝试Ctrl+B,如果有错误,就会得到提示,如果没有错误,就能看到Finished时间