如何在VS Code构建任务中添加Shell命令并实现类Sublime输出样式?
实现VS Code中Python运行输出类似Sublime Text的样式及配置疑问解答
首先,你的环境我已经清楚了:Windows 10 x64、VSCode 1.23.1、Python 3.6.4,刚从Sublime Text 3迁移过来,想要让VS Code运行Python代码时的输出和Sublime保持一致,同时搞懂tasks.json里版本字段的作用,咱们一个个来解决。
一、调整VS Code配置实现Python版本输出(类似Sublime的前置输出)
你当前的tasks.json只是直接运行脚本,要实现先输出Python版本、空行再执行代码的效果,只需要修改tasks.json的配置,让它执行一串shell命令就好。替换成下面的配置:
{ "version": "0.1.0", "command": "cmd", "isShellCommand": true, "args": [ "/c", "python --version && echo. && python -u \"${file}\"" ], "showOutput": "always" }
咱们来拆解一下这个配置的作用:
"command": "cmd":调用Windows的命令提示符来执行后续命令"/c":告诉cmd执行完后面的命令后自动退出"python --version && echo. && python -u \"${file}\"":这串命令是核心:- 先执行
python --version输出当前Python版本 echo.输出一个空行,和Sublime的效果一致python -u \"${file}\"无缓冲地运行当前打开的Python文件(-u参数和你Sublime配置里的作用一样,避免输出缓冲导致内容显示延迟)
- 先执行
这样配置后,运行print('hello world')时,输出就会变成:
Python 3.6.4 hello world
关于运行耗时统计
遗憾的是,VS Code的tasks功能本身并没有像Sublime那样自动添加运行耗时的内置选项。如果确实需要这个功能,可以尝试用PowerShell命令来包裹执行流程,比如用Measure-Command来统计时间,但配置会复杂一些,示例如下(供参考):
{ "version": "0.1.0", "command": "powershell", "isShellCommand": true, "args": [ "-Command", "python --version; Write-Host ''; $time = Measure-Command { python -u '${file}' }; Write-Host '[Finished in ' $time.TotalSeconds 's]'" ], "showOutput": "always" }
不过这个方式的时间统计精度和Sublime略有不同,你可以根据自己的需求选择是否使用。
二、关于"version": "0.1.0"的作用
这个字段指的是VS Code任务配置的格式版本,而不是VS Code本身的版本或者Python的版本。
"0.1.0"是VS Code最早的任务配置格式版本,使用的是command、isShellCommand、args这类顶层字段的结构- 后来VS Code推出了更新的配置版本(比如
2.0.0),采用了更灵活的tasks数组结构,支持多任务、任务类型区分(比如shell、process)等功能。如果你后续想升级配置,推荐使用2.0.0版本的格式,示例如下:
{ "version": "2.0.0", "tasks": [ { "label": "Python Run with Version", "type": "shell", "command": "python --version && echo. && python -u \"${file}\"", "args": [], "group": { "kind": "build", "isDefault": true }, "presentation": { "echo": true, "reveal": "always", "focus": false, "panel": "shared" } } ] }
旧版本的0.1.0格式在新版VS Code中依然可以兼容,但新版本的配置功能更丰富,如果你需要自定义更多任务行为,建议升级到2.0.0。
内容的提问来源于stack exchange,提问作者jxie0755
相关产品推荐
相关产品推荐

