Sublime Text 默认不支持复制文件绝对路径,需通过SideBarEnhancements插件或自定义插件实现;未保存文件返回临时路径,CLI无法反向查询当前打开文件。

Sublime Text 里没有内置快捷键直接复制完整文件路径
默认安装的 Sublime Text 不提供「复制当前文件绝对路径」的菜单项或命令,你右键文件标签、侧边栏或通过 Ctrl+P 搜索都找不到这个功能。这不是你漏看了设置,而是它真没做——得靠插件或手动调用命令补足。
用 Package Control 安装 SideBarEnhancements 插件最省事
这是最成熟、兼容性最好的方案,支持 Windows/macOS/Linux,且不依赖 Python 环境配置。
- 按
Ctrl+Shift+P(Windows/Linux)或Cmd+Shift+P(macOS)打开命令面板 - 输入
Package Control: Install Package回车,等待列表加载 - 搜索
SideBarEnhancements并回车安装 - 安装完成后,右键侧边栏中的文件 →
Copy > Full Path即可复制形如/Users/you/project/main.py的完整路径
注意:该命令只对侧边栏中已显示的文件生效;如果文件未保存(标题栏显示 untitled),会复制一个临时路径如 /var/folders/.../Untitled-1,不是真实磁盘路径。
想在终端或脚本里直接获取当前 Sublime 打开的文件路径?不行,Sublime 不暴露进程级文件状态
Sublime Text 没有提供类似 VS Code 的 code --locate 或 Atom 的 atom --get-editor-process 这类 CLI 接口。它的命令行工具 subl 只能用于打开文件,不能反向查询当前打开内容。
-
subl --help输出里没有任何「query」、「get」、「status」类子命令 - 试图用
lsof -p $(pgrep -f 'sublime_text')或ps aux | grep sublime查看打开文件,通常只能看到启动时传入的参数,无法反映 Tab 切换后的实时编辑文件 - 如果你在写自动化脚本,必须换思路:改用文件监听(如
inotifywait+ 保存钩子),或让 Sublime 通过插件写日志到临时文件再读取
自己写个简单插件实现「一键复制路径」并绑定快捷键
如果你不想装大插件,又需要键盘操作(比如 Ctrl+Alt+C 直接复制),可以手写一个极简插件:
import sublime import sublime_plugin import subprocess import osclass CopyFilePathCommand(sublime_plugin.TextCommand): def run(self, edit): file_name = self.view.file_name() if file_name:
macOS / Linux
if os.name == 'posix': subprocess.run(['pbcopy'], input=file_name.encode(), check=True) # Windows elif os.name == 'nt': subprocess.run(['clip'], input=file_name.encode(), check=True)保存为
~/Library/Application Support/Sublime Text 3/Packages/User/copy_file_path.py(macOS)或对应路径,然后在Preferences > Key Bindings里加一行:{ "keys": ["ctrl+alt+c"], "command": "copy_file_path" }⚠️ 注意点:
- macOS 上依赖
pbcopy(系统自带),Windows 依赖clip.exe(Win7+ 自带),Linux 需要先装xclip或xsel并把命令改成对应二进制名 - 未保存文件的
self.view.file_name()返回None,插件不会报错但也不会复制任何内容——这点容易被忽略 - Sublime 插件运行在主线程,
subprocess.run是同步阻塞的,对大文件无影响,但别在里面跑耗时操作
路径复制这事看着小,但一旦涉及未保存文件、多光标、远程文件系统(如 WSL2 路径映射)、符号链接解析,就很容易掉坑里。动手前先确认你的使用场景到底卡在哪一环。










