Sublime Text 中将快捷键与文件类型相关联

以前在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/91102http://www.cnblogs.com/meetrice/archive/2013/01/24/2875093.html

顺便说一句,一直以为ST2默认快捷键 Ctrl+Shift+F出现的是替换面板,结果就是发现在这个面板下的替换对所有打开的文件有效。后来才知道Ctrl+H才是替换面板。。。终于解开了我对选中内容进行替换的疑惑。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值