以前在Eclipse中最喜欢的功能莫过于格式化。自己可以不管格式,随意写代码,写完按一下Ctrl+Shift+F就搞定了。
转战ST2后,就有点囧了,因为虽然有javascript格式化插件:jsformat(默认快捷键Ctrl+Alt+F),也有Css格式化插件,但这似乎得设定两个快捷键。难道就没有让ST根据文件后缀名,自动确定快捷键对应命令的方法吗?
baidu、google均无果后,自己开始查文档。根据参考1、2,整理方法如下:
1. 安装目录/Data/Packages/User下(如果安装目录下没有Data文件夹,那就是安装目录/Packages/User),修改Default (Windows).sublime-keymap,因为我是windows平台嘛,其他平台选择对应文件就哦了。添加内容如下:
[
{ "keys": ["ctrl+alt+f"], "command": "show_panel", "args": {"panel": "find_in_files"} },
{ "keys": ["ctrl+shift+f"], "command": "js_format","context":
[
{ "key": "setting.js", "operator": "equal", "operand": true }
]
},
{ "keys": ["ctrl+shift+f"], "command": "compact_expand_css", "args": { "action": "expand" },"context":
[
{ "key": "setting.css", "operator": "equal", "operand": true }
]
}
]
这里我把“多文件中查找面板”的快捷键Ctrl+Shift+F给替换为Ctrl+Alt+F。这完全是向Eclipse致敬,额,其实是这个组合用顺手了。
关键就在context属性的设定,其值为一个数组,满足其中一个便可以执行命令。数组中每一个对象都是一个断言表达式,简单解释下这里用到的属性:key是查询目标,operator是操作符,operand是期望值。setting.x是查询对应配置文件中的x属性。下一步我们就设定一下这个值。
2.还是在这个文件夹下,新建文件JavaScript.sublime-settings,内容很简单:
{
"js": true
}
类似的,新建文件CSS.sublime-settings,添加:
{
"css": true
}
然后就收工了~原理是ST2为每种文件类型都设定了Settings配置文件。根据这点,我们可以在快捷键映射文件中对Settings中的属性进行读取,从而判断当前编辑的文件的后缀。根据覆盖优先级,在User文件夹下建立的配置文件拥有最高优先级,所以相关配置文件都放入User文件夹内。其他判断也可以采用类似的形式。
参考:
Key Binding:http://sublime-text-unofficial-documentation.readthedocs.org/en/latest/reference/key_bindings.html
Settings:http://sublime-text-unofficial-documentation.readthedocs.org/en/latest/customization/settings.html
JSFromat:https://github.com/jdc0589/JsFormat
css格式化插件:http://my.oschina.net/ito/blog/91102、http://www.cnblogs.com/meetrice/archive/2013/01/24/2875093.html
顺便说一句,一直以为ST2默认快捷键 Ctrl+Shift+F出现的是替换面板,结果就是发现在这个面板下的替换对所有打开的文件有效。后来才知道Ctrl+H才是替换面板。。。终于解开了我对选中内容进行替换的疑惑。。。