sublime如何设置窗口启动位置和尺寸?(多屏用户优化)

11次阅读

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

sublime如何设置窗口启动位置和尺寸?(多屏用户优化)

sublime_text.exe 启动参数能否控制窗口位置和尺寸?

不能。sublime textwindows 原生启动器 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 FilesSublime Textsublime_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;数值需根据你的双屏布局实测调整
  • 必须提前在「系统设置 → 隐私与安全性 → 辅助功能」中勾选 SlateTerminal(或你执行脚本的终端)
  • 如果 Sublime 启动慢于 sleep 0.5,窗口可能尚未就绪,建议加 repeat while... 循环检测

多屏下真正稳定的方案,永远不是靠 Sublime 自身记忆,而是用外部工具在窗口创建后立刻接管——坐标值、缩放补偿、显示器热插拔响应,这些细节漏掉一个,窗口就可能消失在视野之外。

text=ZqhQzanResources