Sublime Text 是可以高度定制个性化的,在接下来的话题中,将会阐述如何定制以适配你的需求。
设置
Sublime Text将配置数据保存在 .sublime-settings 文件中.在复杂系统中使用设置是很灵活的.然而,这里有一条简单规则:
要将配置文件放到 Packages/User文件夹下以保证其凌驾于其他可能发生冲突的配置文件之上.
有了这样的约定,接下来让我们来揭开如何个性化定制的秘密.
文件格式
配置文件是JSON格式的且后缀名为 .sublime-settings。
文件类型
每一个.sublime-settings文件的作用由它们的名称决定. 它们可能是描述性的 (例如 Preferences (Windows).sublime-settings 或 Minimap.sublime-settings), 或者与设置文件所控制的具有相关性.例如,文件类型设置需要带上定义文件类型的.tmLanguage 语法名称. 因此:
定义在Python.tmLanguage中的.py 文件类型 , 相应的设置文件被称作Python.sublime-settings.
此外, 一些设置文件只会应用到特定的平台. 这可以从文件名中看出端倪: Preferences (Windows).sublime-settings,Preferences (Linux).sublime-settings, 等等.
重要: 在Packages/User文件夹下的Platform-specific设置文件将会被忽略. 这样的话, 就可以确定单个Platform-specific设置文件会覆盖其他的设置文件.
如何访问和编辑公用设置文件
除非你需要非常细粒度的控制设置, 否则你只需要通过Preferences | Settings - User和Preferences | Settings - More菜单项来访问主配置文件即可. 编辑Preferences - Settings Default 并不是一个很明智的做法, 因为每一次软件升级都会还原你的更改. 但是你可以参考这个文件: 它包含了所有全局变量和文件类型设置的注释说明.
.sublime-settings文件的优先级顺序
同一个设置文件 (such as Python.sublime-settings)可以出现在多个地方. 所有命名相同的文件设置将会合并到一起并且后续的规则会覆盖前面的规则. 参考 Merging and Order of Precedence了解更多.
再一次强调:Packages/User中的最终设置文件将会覆盖前面定义的其他同名文件。
除了设置文件, Sublime Text还包含session 数据—当前正在编辑特殊设置的文件的设置. Session数据随着你所操作的文件更新, 因此无论你以任何方式调整特定文件的设置 (mainly through API calls),它们将会记录在session中并且优先级位于一切.sublime-settings 文件之上.
为了检查特定编辑的文件的设置值, 在console中使用view.settings().get(<setting_name>).
最后, 值得注意的是一些设置会自动调整.下面展示的是Sublime Text在Windows中处理假设层次的Python文件的次序:
Packages/Default/Preferences.sublime-settings
Packages/Default/Preferences (Windows).sublime-settings
Packages/User/Preferences.sublime-settings
Packages/Python/Python.sublime-settings
Packages/User/Python.sublime-settings
Session data for the current file
Auto adjusted settings
全局编辑器和文件设置
这些设置保存在 Preferences.sublime-settings 和 Preferences (<platform>).sublime-settings 文件中. 默认的在Packages/Default中.
<platform> 的有效名称是 Linux, OSX, 和 Windows.
文件类型设置
如果你想要指向特定的文件类型, 将 .sublime-settings文件命名为特定的文件类型语法定义即可.例如,如果语法定义为Python.tmLanguage, 我们我要将设置文件叫做Python.sublime-settings.
特定文件类型的设置文件通常在特定的包中, 像 Packages/Python, 但同一文件类型的多个设置文件可能位于不同的位置.
类似全局设置, 可以建立特定操作系统的文件类型. 例如, Python (Linux).sublime-settings只在Linux系统下有效.
此外, 在Packages/User下, 只有Python.sublime-settings 将会被读取, 而不是任何其他变种 Python (<platform>).sublime-settings文件.
不考虑位置, 所有特定文件类型设置文件优先于所有全局设置文件的文件类型设置.
如何保存用户设置
无论何时你想要保存设置, 尤其是需要在软件更新之前保存的时候,需要将相应的.sublime-settings文件保存到Packages/User目录下.
快捷键
参阅Reference for key bindings 了解完整的快捷键设置文档.
文件格式
快捷键设置定义在.sublime-keymap 文件中. 为了在各个平台上更加智能, Linux,OSX和Windows上的快捷键映射是不一样的. 只有每个平台相应的快捷键才会被加载.
示例
下面是Windows下默认的快捷键映射的一个片段摘要:
[
{ "keys": ["ctrl+shift+n"], "command": "new_window" },
{ "keys": ["ctrl+o"], "command": "prompt_open_file" }
]
定义和覆盖默认快捷键映射
Sublime Text 附带了默认的快捷键映射 (例如, Packages/Default/Default (Windows).sublime-keymap). 为了覆盖默认定义的快捷键, 或者添加新的快捷键, 可以将单独的快捷键映射以更高的优先级保存起来,例如保存到Packages/User/Default (Windows).sublime-keymap文件中.
参阅 Merging and Order of Precedence 了解更多关于Sublime Text合并的次序.
高级快捷键绑定
简单的快捷键绑定包含一个键和一个要执行的命令.此外,还有更多复杂的语法:
传入参数
指定参数传入args:
{ "keys": ["shift+enter"], "command": "insert", "args": {"characters": "\n"} }
这里, 当按下Shift+Enter的时候\n 传入 insert 命令.
上下文
上下文环境决定一个给定的快捷键绑定在当前插入符号的位置还是其他场景有效.
{ "keys": ["escape"], "command": "clear_fields", "context":
[
{ "key": "has_next_field", "operator": "equal", "operand": true }
]
}