Sublime Text 3插件需求:根据远程主机自动切换配色主题
当然可以实现!我自己也折腾过类似的配置,下面是一套经过验证的方案,能让Sublime Text 3(ST)根据RemoteSubl连接的远程主机自动切换配色方案:
实现RemoteSubl自动切换配色方案
1. 编写自定义ST插件监听远程连接
ST的插件系统可以轻松监听文件加载事件,判断文件是否来自RemoteSubl的远程连接。具体操作:
- 打开ST,点击顶部菜单
Tools > Developer > New Plugin - 把默认生成的代码替换成以下内容:
import sublime import sublime_plugin import re # 核心配置:把你的远程主机/IP/端口和对应配色方案对应起来 HOST_THEME_MAP = { "dev-server-01": "Monokai", "192.168.1.100": "Solarized Light", "test-server:2222": "Dracula" # 支持带端口的区分 } class RemoteThemeSwitcher(sublime_plugin.EventListener): def on_load_async(self, view): # 获取当前文件路径,RemoteSubl的远程文件路径格式是 `remote://[user@]host:port/path` file_path = view.file_name() if not file_path or not file_path.startswith("remote://"): return # 解析远程主机(支持带端口的情况) match = re.match(r"remote://(?:.*@)?([^:/]+)(?::(\d+))?", file_path) if not match: return remote_host = match.group(1) remote_port = match.group(2) # 生成匹配键:如果有端口就用「主机:端口」,否则只用主机名 target_key = f"{remote_host}:{remote_port}" if remote_port else remote_host # 查找对应的配色方案并切换 target_theme = HOST_THEME_MAP.get(target_key) if target_theme: settings = sublime.load_settings("Preferences.sublime-settings") # 注意配色方案的路径:内置配色在Color Scheme - Default下,第三方要写完整路径 settings.set("color_scheme", f"Packages/Color Scheme - Default/{target_theme}.sublime-color-scheme") sublime.save_settings("Preferences.sublime-settings")
- 保存文件到ST的
Packages/User目录(macOS路径:~/Library/Application Support/Sublime Text 3/Packages/User/;Windows路径:%APPDATA%\Sublime Text 3\Packages\User\),命名为remote_theme_switcher.py
2. 配置主机与配色的映射
修改代码里的HOST_THEME_MAP字典,根据你的实际需求添加/修改映射关系:
- 内置配色方案直接用名称即可(比如
"Monokai") - 第三方配色方案需要写完整路径,比如你装了Dracula主题,路径就是
"Packages/Dracula Color Scheme/Dracula.sublime-color-scheme" - 如果要区分同一主机的不同端口,直接用
"主机名:端口号"作为键即可
3. 验证功能
通过RemoteSubl从不同远程主机(或同一主机不同端口)打开文件,ST会自动切换到你配置好的配色方案。如果没生效,可以检查:
- 配色方案的路径是否正确
- 主机名/端口的拼写是否和RemoteSubl的路径一致
- 插件文件是否保存到了正确的目录
额外扩展
如果需要切换的不只是配色方案,连ST的主题(界面样式)也要一起切换,只需要在代码里加一行:
settings.set("theme", "Adaptive.sublime-theme") # 替换成你要的主题路径
内容的提问来源于stack exchange,提问作者tmo
相关产品推荐
相关产品推荐

