Sublime Text 4 插件,替代默认的 switch_file 命令(Alt+O)。
通过统一的**循环组(cycle group)**配置模型,支持扩展名切换、目录替换、文件名后缀循环等多种文件切换模式。
通过 git 将仓库克隆到 Sublime Text 的 Packages 目录下:
- 打开 Sublime Text,菜单 Preferences → Browse Packages...,打开
Packages目录 - 在该目录下执行:
git clone https://github.com/chengche/better_switch.git- 重启 Sublime Text,插件即可生效
更新插件时,进入插件目录执行 git pull 即可。
- 扩展名切换 —
.h↔.cpp/.c/.cc等,覆盖 Sublime 默认行为 - UE 目录替换 —
Public/↔Private/,支持任意子目录深度 - MVC 后缀循环 —
player_model.py→player_view.py→player_ctrl.py - MVC 目录循环 —
models/user.py→views/user.py→controllers/user.py - 隐式组合 — 目录替换后自动叠加扩展名切换(如
Public/Foo.h→Private/Foo.cpp) - 已打开文件智能跳转 — 候选文件已在 tab 中打开时直接 focus,不重复打开
| 快捷键 | 功能 |
|---|---|
Alt+O |
切换到下一个匹配的文件 |
通过菜单 Preferences → Package Settings → Better Switch 打开配置文件。
每条规则定义一个循环组,cycle 中每个槽位是一个别名数组:
| type | 说明 | 匹配目标 |
|---|---|---|
extensions |
替换文件扩展名 | 同目录下切换 |
directories |
替换路径中的目录名 | 跨目录切换 |
suffixes |
替换文件名后缀(扩展名前) | 同目录下切换 |
MVC 后缀模式:
{
"type": "suffixes",
"cycle": [["_model", "_m"], ["_view", "_v"], ["_ctrl", "_c"]]
}player_model.py → Alt+O → player_view.py → Alt+O → player_ctrl.py → Alt+O → 回到 player_model.py
MVC 目录模式:
{
"type": "directories",
"cycle": [["models"], ["views"], ["controllers"]]
}models/user.py → Alt+O → views/user.py → Alt+O → controllers/user.py
- 每个槽位是别名数组,匹配时任意一个命中即可
- 生成候选路径时使用第一个别名(canonical form)
- 例如
["_model", "_m"]表示_model和_m都能匹配,生成候选时使用_model
- 规则按配置中的数组顺序依次尝试
- 同目录的扩展名规则优先于跨目录规则(默认配置已按此顺序排列)
directories/suffixes规则找不到精确匹配时,自动叠加extensions规则做二次查找- 多个候选文件存在时,选择第一个匹配的
- 配置中的扩展名别名请使用小写(匹配时大小写不敏感,但别名本身需小写)
directories类型会替换路径中最后一个匹配的目录名(离文件最近的)suffixes类型在多个后缀都能匹配时,优先匹配最长的后缀
- Sublime Text 4(Python 3.8)
- Windows / macOS / Linux
{ "switch_rules": [ // C/C++ 头文件 ↔ 源文件 { "type": "extensions", "cycle": [ ["h", "hpp", "hxx", "hh"], ["cpp", "c", "cc", "cxx", "m", "mm", "ipp", "inl"] ] }, // UE Public/Private 目录切换 { "type": "directories", "cycle": [["Public"], ["Private"]] } ] }