sublime text 默认禁止同名文件多开,需设置 "open_files_in_new_window": true 或使用 subl -n 命令实现;开启后标签页默认不显路径,须右键启用“show full path in tab”避免混淆。

Sublime Text 默认禁止同名文件多开,必须改配置
Sublime Text 默认把同一路径的文件视为“同一个”,无论你用多少个窗口打开,它都只在已有标签页里切换。这不是 bug,是设计行为——但确实反直觉,尤其当你需要对比两个同名但不同路径的文件(比如 index.js 在 src/ 和 test/ 下)时。
关键点在于:Sublime 不靠文件名判断唯一性,而是靠完整路径;但如果你手动拖拽或双击打开,它会自动 resolve 路径,导致你以为“不同位置的同名文件”被当成一个。
- 必须修改
sublime-text-3/Packages/User/Preferences.sublime-settings(或通过 Preferences → Settings 打开) - 添加或修改字段:
"enable_tab_scrolling": false不影响此行为,别被误导 - 真正起作用的是:
"hot_exit": false和"remember_open_files": false无关,别乱动 - 核心配置项是:
"allow_pane_splitting": true—— 这个只是控制分屏,也不对 - 正确解法:加这一行:
"open_files_in_new_window": true
真正生效的配置只有 open_files_in_new_window
这个选项控制「外部触发的打开行为」是否强制进新窗口。默认是 false,意味着从资源管理器拖入、命令行 subl file.js、甚至右键菜单“Open with Sublime Text”,都会复用当前窗口。
设为 true 后,每次外部打开操作都新建窗口(哪怕只是单个文件),这样你就能手动维持多个窗口,各自打开同名但不同路径的文件。
- 配置位置:用户设置(Preferences → Settings – User),不是默认设置
- 写法必须是 JSON 格式,注意逗号和引号:
"open_files_in_new_window": true - 改完不用重启,但已打开的窗口不会自动分裂;需关闭再重新拖入或命令行打开
- 副作用:所有外部打开都会弹新窗口,包括你双击桌面快捷方式——如果不想这样,得配合脚本或 alias
命令行打开时加 -n 参数才是最准的绕过方式
即使没改全局配置,也能临时实现多开。Sublime 命令行工具支持 -n(new window)参数,它比配置更优先,且不干扰日常操作。
比如你在终端里执行:subl -n src/index.js 和 subl -n test/index.js,就会得到两个独立窗口,各持一个 index.js,互不干扰。
-
-n是跨平台的,在 macOS/Linux 的subl和 Windows 的subl.exe都有效 - 如果没配置好
subl命令,先运行 Sublime 的 Tools → Command Palette → “Shell Commands: Install Sublime Command Line” - 注意不要写成
--new或-new,只有小写短横-n - 搭配
-a(add to current window)可以精细控制:想加到现有窗口就用-a,想隔离就用-n
同名文件多开后,标签页标题不显示路径,容易混淆
就算成功开了两个 index.js,它们在各自窗口的标签页上都只显示 index.js,没有任何路径提示。这是 Sublime 的默认行为,极易点错、保存错。
解决办法不是插件,而是启用内置的「显示完整路径」模式,仅对当前窗口生效:
- 右键任意标签页 → “Show Full Path in Tab”(没有快捷键)
- 启用后,标签变成类似:
src/js/index.js — Sublime Text - 该设置不保存,每个窗口要单独开;不能写进全局配置自动启用
- 如果常用,可录个宏或装
Tab Name Manager插件,但纯配置方案里它不存在
真正的麻烦不在怎么开,而在开了之后怎么不搞混——路径不可见这件事,比打开方式本身更容易导致误操作。










