如何通过快捷键将当前文件复制到剪贴板用于跨应用附件?
实现将当前文件复制到剪贴板作为附件的方法
Windows 平台
- 核心用PowerShell的
Set-Clipboard命令,把文件以可拖放的格式写入剪贴板:- 命令示例:
Set-Clipboard -Path "你的文件绝对路径" -Format FileDropList - 如果用Vim/Neovim(通过Fzf打开编辑),可以在配置文件里加快捷键映射,比如:
之后按nnoremap <leader>cf :call system('powershell.exe Set-Clipboard -Path "' . expand('%:p') . '" -Format FileDropList')<CR><leader>cf就能快速复制当前文件到剪贴板。 - 要是用VS Code,在
keybindings.json里加自定义快捷键:{ "key": "ctrl+shift+c", "command": "workbench.action.terminal.sendSequence", "args": { "text": "powershell.exe Set-Clipboard -Path \"${file}\" -Format FileDropList\n" }, "when": "editorFocus" }
- 命令示例:
macOS 平台
- 用AppleScript配合
osascript工具来实现,macOS原生支持这种文件剪贴格式:- 命令示例:
osascript -e 'tell application "Finder" to set the clipboard to POSIX file "你的文件绝对路径"' - Vim/Neovim里的快捷键映射:
nnoremap <leader>cf :call system('osascript -e ''tell application "Finder" to set the clipboard to POSIX file "' . expand('%:p') . '"''')<CR> - 也可以用Alfred、Raycast这类工具,设置全局快捷键动作,自动抓取当前编辑器的文件路径并执行上述命令。
- 命令示例:
Linux 平台
- 分X11和Wayland环境,用对应的剪贴板工具:
- X11环境(大部分桌面):用
xclip,命令是xclip -selection clipboard -target text/uri-list file://$(realpath "你的文件绝对路径")
Vim映射:nnoremap <leader>cf :call system('xclip -selection clipboard -target text/uri-list file://' . expand('%:p'))<CR> - Wayland环境(比如GNOME 40+):用
wl-copy,命令是wl-copy --type text/uri-list file://$(realpath "你的文件绝对路径")
Vim映射替换对应的命令即可。
- X11环境(大部分桌面):用
关键说明
不管用哪种方法,核心都是获取当前文件的绝对路径,然后调用对应平台的工具,把文件路径以「文件URI」或「拖放列表」的格式写入剪贴板,这样Outlook、Teams这类软件就能识别为可添加的附件,而不是复制文件内容。
内容的提问来源于stack exchange,提问作者Invalidsearch
相关产品推荐
相关产品推荐

