如何通过URL在VS Code中打开含指定内容的新文件?
通过URL在VS Code中打开带指定内容的新文件的方法
目前VS Code原生的vscode://协议并不支持直接通过data/blob URL创建带指定内容的新文件,但可以通过以下两种可行方案实现需求:
方案一:命令行协议封装(本地环境可用)
借助系统命令行协议,直接调用VS Code的命令行参数创建临时文件并打开:
- 核心命令逻辑
通过命令行生成带指定内容的临时文件,再用VS Code打开:
# macOS/Linux echo "Hello World!" > /tmp/temp-content.txt && code /tmp/temp-content.txt # Windows echo Hello World! > %temp%\temp-content.txt && code %temp%\temp-content.txt
- 可点击链接示例
把命令封装成系统可识别的协议链接:
- Windows:
<a href="cmd:///c echo Hello World! > %temp%\temp-content.txt && code %temp%\temp-content.txt">打开带内容的文件</a>
- macOS:
<a href="open -a 'Visual Studio Code' --args $(echo "Hello World!" > /tmp/temp-content.txt && echo /tmp/temp-content.txt)">打开带内容的文件</a>
方案二:VS Code远程服务API(需启动服务)
先开启VS Code的远程服务,再通过API创建文件并打开:
- 启动VS Code服务:
code --start-server --port=8080
- 用JS封装创建并打开的逻辑(可绑定到页面点击事件):
async function createAndOpenFile() { const content = btoa("Hello World!"); // 对内容做base64编码 // 创建临时文件 await fetch('http://localhost:8080/api/v1/files', { method: 'POST', headers: {'Content-Type': 'application/json'}, body: JSON.stringify({ path: '/tmp/remote-temp.txt', content: content, encoding: 'base64' }) }); // 打开创建好的文件 await fetch('http://localhost:8080/api/v1/windows/active/files', { method: 'POST', headers: {'Content-Type': 'application/json'}, body: JSON.stringify({files: ['/tmp/remote-temp.txt']}) }); }
关于data/blob URL方案的说明
VS Code的vscode://协议仅能识别本地或远程文件系统的真实路径,无法解析data或blob这类内存级URL,所以只会打开空白窗口,这是当前协议的固有限制。
内容的提问来源于stack exchange,提问作者vanowm
相关产品推荐
相关产品推荐

