Sublime Text 不仅是一款界面极其精美的代码编辑器,其高度的可定制性让每个用户都能以自己想要的方式体验到编辑的乐趣,可以说是对"编程之美"最直观的阐释.
Nil的主题效果
不过你也许会像我一样对 Sublime Text 的外观不太满意.并不是说它不够的华丽,只是在细节方面每个人的品味不同.对此,选择一些第三方的主题是极好的解决方案.
//////////////////////////////////////////////////////
// 使用第三方主题
//////////////////////////////////////////////////////
在 Sublime Text 中,更改外观通常指两个方面: Theme 和 Color-Scheme.
Theme:软件主题,改变的是标签、侧边栏、状态栏、字体等等的样式.
Color-Scheme:文字内容的高亮方案或配色方案.在菜单(Preferences->Color Color-Scheme)中有很多可选的内置方案.
比较流行的主题/配色方案:
Aqua
Flatland:https://github.com/thinkpixellab/flatland/archive/master.zip
Phoenix:http://netatoo.github.io/phoenix-theme/
Soda:https://github.com/buymeasoda/soda-theme
Nil:https://github.com/nilium/st2-nil-theme/zipball/master
Pseudo:https://github.com/raik/st2-pseudo-osx-theme
使用方式:
下载,解压,得到文件夹,把文件夹重命名为这种格式:"Theme - 主题名"(名字无要求,ST 会自动检测Packages文件夹下的主题文件),然后放入 Sublime Text 的 Packages 文件夹中.如果不知道这个文件夹在哪,点菜单(Preferences->Browse Packages).
然后在配色方案(Preferences->Color Color-Scheme)中会发现多了个"Theme - 主题名"子菜单,直接切换就可以了.
有些"主题/配色方案"中不仅包含配色方案,还有改变软件全貌的主题.启用的方法比配色方案多一步.
打开菜单(Preferences->Settings - User),这是编写用户自定义设置的文件.遵循的原则是,不设置就用默认的,设置了就用你设置的.
新装的软件中,该文件是空的,用久了会有一些用户自定义的设置在里头,格式为
{
"设置项1": "参数值1",
"设置项1": "参数值1"
}
以键值对的形式存在,最后一组无逗号,整个文件用一个大括号括起来.
启用主题的语句为:
"theme": "Nil.sublime-theme",
左边"theme"表示设置当前主题后冒号后面的值,
右边的值,就是之前解压好的"Theme - 主题名"文件夹中的一个文件,它会以"sublime-theme"后缀名结尾,表示这是一个软件主题.
将该语句添加到大括号中,前后顺序随意,但要保证最后一项不能有逗号.比如回像这样子:
{
"color_scheme": "Packages/Theme - Nil/Tubnil.tmTheme",
"font_face": "微软雅黑",
"font_size": 12,
"theme": "Nil.sublime-theme"
}
保存文件后能立即见效,不过有些细节需要重启软件才能生效.
注意到第一行的"color_scheme"就是配色方案在菜单里选择其他的方案,这里会同步改动,所以也可以在这里手动修改配色方案,后缀名就是"tmTheme"了.
第二三行修改字体,保存见效.
修改第三方主题
以"Nil.sublime-theme"为例,可以对现有主题做些小修改.
编辑器打开"Nil.sublime-theme",里面定义了主题全部的参数,格式为
[
{
"class": "要修改的大项1",
"子项": "值"
},
{
"class": "要修改的大项2",
"子项": "值"
}
]
class表示将要定义的是标签、侧栏或其他地方等等,子项表示要怎么对这个地方具体的设置,比如修改标签:
{
"class": "tabset_control", //修改tabset_control(标签栏)
"tab_height": 35 //(设置标签高度为35)
},
点击保存见效.
设置很多,但一般都会有比较详细的注释说明,看需要修改.
注:因为我用了MacType系统字体美化,有个配置会让字体重影:
"shadow_offset": [0, 0.5]
改成[0,0]就好了,不过MacType装的人不多,影响不明显.
//////////////////////////////////////////////////////
// 自定义快捷键
//////////////////////////////////////////////////////
快捷键也是在配置文件里写,也遵循覆盖的原则.
菜单(Preferences->Key Bindings - User)是自定义文件,菜单(Preferences->Key Bindings - Default)是默认的.要改什么,直接在默认配置里面复制过来,修改修改就好了.
比如要将"Ctrl+D"改成Eclipse里的删除整行:
在网上查了下快捷键:(http://blog.sina.com.cn/s/blog_7d34486c0100vu20.html),
是"Ctrl+Shift+K",于是查找"Ctrl+Shift+K"所在的那句:
{ "keys": ["ctrl+shift+k"], "command": "run_macro_file", "args": {"file": "Packages/Default/Delete Line.sublime-macro"} },直接复制到自定义文件中,"ctrl+shift+k"改成"Ctrl+D"就行了.
复杂的快捷键定义:宏定义,格式如下:
{ "keys": ["Ctrl+Shift+K"], "command": "run_macro_file", "args": {"file": "Packages/Default/Delete Line.sublime-macro"} }
意思是要在外部文件中写一个关于快捷键的宏定义,这个文件内容是就是多个"command"的组合
[
{"command": "duplicate_line"},
//move:移动光标
//参数:
//by:表示移至字母、单词、行等等的前/后位置.可以是characters, words, word_ends, subwords, subword_ends, lines, pages, stops中的任意一种.
//参数:
//forward:时候向前移动,false自然就是表示向后移动.
//整句的意思就是:光标移到下一行.
{"command": "move", "args": {"by": "lines", "forward": false}},
//和move类似,不过针对的是行首、文件尾等等的位置
//参数:
//to:移到哪里,可以是bol, eol, bof, eof, brackets.
//extend:是否需要光标移到哪就选到哪里.
//整句的意思就是:移到行首
{"command": "move_to", "args": {"to": "bol","extend":false}},
//移到行尾,并且选到行尾.因为上一句光标在行首,所以现在的状态是选中了整行,而且光标停留在行尾.
{"command": "move_to", "args": {"to": "eol","extend":true}},
//强制缩排,这里我只是想在当前行的上头原样复制一行,所以不需要 ST 帮我缩排,所以false.
{"command": "reindent", "args": {"force_indent": false}}
]
关于所有可能的命令和对应的参数,可以参考 ST 的非正式文档:
http://sublime-text-unofficial-documentation.readthedocs.org/en/latest/reference/commands.htm