sublime text 多显示器窗口定位需手动计算绝对坐标:x/y 以主显示器左上角为原点,副屏位置须按分辨率偏移推算;必须用 --new-instance 启动才生效,且每个窗口需单独配置,不继承位置。

Sublime Text 无法自动识别多显示器并按需分配窗口位置,必须手动指定绝对坐标,且 x/y 值是相对于主显示器左上角的像素值,不是相对当前屏幕。
Window.sublime-settings 中的 x/y 是绝对坐标,不是相对屏坐标
Sublime 不读取操作系统多显示器布局信息,Window.sublime-settings 里的 "x" 和 "y" 永远以主显示器(系统设置中标记为「1」的屏)左上角为原点。比如你在副屏右边缘起始位置是 2560 像素,想让 Sublime 窗口左上角落在副屏正中央,就得算:x = 2560 + (副屏宽度 / 2) - (窗口宽度 / 2),再填进配置。
常见错误现象:
- 直接填
{"x": 0, "y": 0},结果窗口总卡在主屏左上角,副屏完全没反应 - 用截图工具量了副屏坐标就填进去,忘了减去窗口自身宽高偏移,导致窗口一半飞出屏幕
- 切换显示器排列顺序(比如把副屏拖到主屏左边)后,旧配置失效,但 Sublime 不报错也不提醒
启动时加 --new-instance 才能绕过窗口状态覆盖
Sublime 默认会把上次关闭时的窗口位置“强行还原”,哪怕你改了 Window.sublime-settings,只要不加参数重启,新配置就会被运行时状态覆盖。必须用命令行带 --new-instance 启动才能确保读取你写的坐标。
实操建议:
- Windows:右键快捷方式 → 属性 → 目标栏末尾加
--new-instance(注意前面有空格) - macOS:终端执行
open -n -a "Sublime Text" --args --new-instance - Linux:
subl --new-instance(确保subl命令已配置) - 别依赖双击图标或 Dock 启动——它们默认不带该参数
多窗口之间不共享布局,每个窗口需单独配位置
Sublime 的窗口位置是 Window 级别的,不是全局设置。你配好一个窗口在副屏,新开一个 File → New Window,它仍会默认出现在主屏左上角,不会继承前一个的位置。
所以真实工作流中:
- 不要靠“开多个窗口→手动拖到不同屏”来管理,效率低且每次重启都得重拖
- 每个常用窗口对应一个独立的
.sublime-project文件,并在项目设置里写死"window": {"x": ..., "y": ...}(部分插件支持,但原生不认) - 更稳的做法:用系统级窗口管理工具(如 Windows PowerToys 的 FancyZones、macOS Magnet)绑定 Sublime 窗口类名,按规则自动贴边/定位
- 如果必须靠 Sublime 自身,就只开一个主窗口,用
Ctrl+Alt+2等分屏快捷键做逻辑分组,而不是物理多窗口
真正容易被忽略的是:Sublime 在多显示器环境下从不保存「哪个窗口在哪块屏」这个信息,它只存两个数字——x 和 y。所有「跨屏」效果,都是你算出来的,不是它感知到的。











