不能。Sublime Text 各平台原生启动器均不支持--geometry等窗口定位参数,需依赖配置文件remember_window_position设置或AutoHotkey/macOS+Slate等外部工具强制干预。

sublime_text.exe 启动参数能否控制窗口位置和尺寸?
不能。Sublime Text 的 Windows 原生启动器 sublime_text.exe 不接受 --geometry、--pos 或类似 X11 风格的命令行参数,传入会被忽略。
macOS 和 Linux 版本也无内置 CLI 窗口定位支持。所有平台都依赖配置文件或外部工具干预。
通过 Preferences → Settings 修改 remember_window_position
这是最直接的干预点:Sublime 默认会记住上次关闭时的位置和大小,但多屏环境下容易“记错”——比如在副屏关闭,下次主屏启动时窗口可能卡在不可见区域。
-
"remember_window_position": true(默认)→ 会读取Local/Session.sublime_session中的坐标,但该坐标是绝对屏幕坐标,不随显示器热插拔/缩放比例变化而适配 -
"remember_window_position": false→ 每次启动都回到“系统默认位置”,通常是主屏左上角附近,尺寸为默认值(约 1200×800),适合多屏切换频繁的用户 - 改完后需完全退出 Sublime(右键托盘图标 → Exit,或任务管理器结束
subl.exe进程),否则设置不生效
用 AutoHotkey 强制定位 Sublime 窗口(Windows 多屏首选)
当需要精确控制(例如:始终在副屏居中、固定宽度+高度、避开任务栏),AutoHotkey 是目前最可靠方案。它在 Sublime 启动后几毫秒内捕获窗口并移动/缩放。
示例脚本(保存为 subl-position.ahk,用 AutoHotkey v2 运行):
SetTitleMatchMode, "RegEx"
Run, "C:\Program Files\Sublime Text\sublime_text.exe"
WinWait, "Sublime Text.*", , 3
if (WinExist()) {
WinMove("Sublime Text.*", "", 1920, 100, 1200, 900) ; x=1920 即副屏起始横坐标(主屏宽1920px时)
}
- 关键点:
WinWait等待窗口出现,WinMove执行定位;x 值必须匹配你当前副屏的逻辑起始横坐标(可用WinGetPos先探测) - 若副屏分辨率/缩放比变化(如从 100% 切到 125%),需同步调整
WinMove的宽高值,否则内容被裁剪 - 避免用
RunWait,否则会阻塞脚本,导致窗口无法捕获
macOS 上用 applescript + slate 实现类似效果
macOS 原生不提供窗口坐标 API 给第三方 App,但可通过辅助功能权限 + osascript 调用 slate(开源窗口管理器)完成定位。
先安装 slate:brew install slate,再运行:
open -a "Sublime Text"
sleep 0.5
osascript -e 'tell application "Slate" to move window of application "Sublime Text" to {1440, 20, 1200, 900}'
- {1440, 20, 1200, 900} 表示 x=1440(副屏起点)、y=20、宽1200、高900;数值需根据你的双屏布局实测调整
- 必须提前在「系统设置 → 隐私与安全性 → 辅助功能」中勾选
Slate和Terminal(或你执行脚本的终端) - 如果 Sublime 启动慢于
sleep 0.5,窗口可能尚未就绪,建议加repeat while...循环检测










