Sublime Text 启动时不保存布局,因layout是会话级状态而非全局配置;修改Preferences.sublime-settings无效,需用set_layout命令配合50ms延迟执行实现伪默认双栏/四宫格布局。

Sublime Text 启动时不会记住上次的布局,所谓“默认布局”只能靠手动触发或配置预设;原生不支持开机即双栏/四宫格,但可通过用户键绑定 + 延迟执行模拟接近效果。
为什么改 Preferences.sublime-settings 里的 layout 不生效
layout 是会话级(session)状态,不是全局配置项。写死在 Preferences.sublime-settings 中的 layout 字段会被启动时忽略——Sublime 只在用户主动调用 set_layout 或使用快捷键时才应用布局。强行加进去不仅无效,还可能干扰插件加载顺序或导致窗口初始化异常。
用 set_layout 命令 + 延迟执行实现“伪默认布局”
最可行的方案是:在 Sublime 启动后几毫秒内自动执行一次 set_layout,模拟默认分屏。需配合插件或自定义命令,但不必装 Origami(它已过时且易冲突)。
- 打开
Preferences → Browse Packages…,进入User目录 - 新建文件
default_layout.py,内容如下:
import sublime
import sublime_plugin
<p>class DefaultLayoutCommand(sublime_plugin.ApplicationCommand):
def run(self):</p><h1>延迟 50ms 执行,确保窗口已就绪</h1><pre class="brush:php;toolbar:false;"> sublime.set_timeout(lambda: sublime.active_window().run_command("set_layout", {
"cols": [0.0, 0.5, 1.0],
"rows": [0.0, 1.0],
"cells": [[0, 0, 1, 1], [1, 0, 2, 1]]
}), 50)
- 再打开
Preferences → Key Bindings,在用户配置中添加触发绑定(可选,用于手动重置):
[{
"keys": ["ctrl+alt+shift+l"],
"command": "default_layout"
}]
- 重启 Sublime,它会在启动后自动切为左右双栏
- 若想改成四宫格,把
set_layout的args换成:{"cols": [0.0, 0.5, 1.0], "rows": [0.0, 0.5, 1.0], "cells": [[0, 0, 1, 1], [1, 0, 2, 1], [0, 1, 1, 2], [1, 1, 2, 2]]}
更轻量的替代:用 Project 文件固化布局
如果你只对特定项目需要固定布局(比如前端项目总要左代码右终端),Project 是比全局方案更干净的选择:
- 菜单
Project → Save Project As…,保存为myproject.sublime-project - 用文本编辑器打开该文件,在顶层 JSON 中加入:
"settings": {
"layout": {
"cols": [0.0, 0.6, 1.0],
"rows": [0.0, 1.0],
"cells": [[0, 0, 1, 1], [1, 0, 2, 1]]
}
}
- 保存后,每次用
Project → Open Project…打开这个项目,布局就会自动还原(包括已打开的文件位置) - 注意:
layout字段在这里有效,是因为 Project 加载时机晚于主窗口初始化,且 Sublime 明确支持该字段在 project settings 中生效
别踩的坑:快捷键被系统或插件劫持
很多人设好 set_layout 却发现启动没反应,真正原因常是:
- 系统级快捷键冲突(如 Windows 的多桌面切换、macOS 的 Mission Control 默认占用了
Cmd+Alt+2) - 已安装的插件覆盖了原生命令(Origami、OrigamiEnhanced、SideBarEnhancements 都可能劫持
set_layout) - 键绑定写错层级:必须放在用户 keymap 的顶层数组里,不能嵌套在
context或其他条件块中 - 路径写错:
default_layout.py必须放在Packages/User/下,不能放在子目录里
真正稳定的“默认布局”不存在于配置文件里,而藏在启动后的那一行 set_timeout 调用里——延迟虽短,却是绕过 Sublime 初始化机制的唯一可靠时机。











