code runner 默认不支持运行选中代码段,仅执行整个文件;需通过自定义 executormap 配置临时执行命令(如 python 用 echo '$selectedtext' | python -),但多行、缩进或上下文依赖时易报错,推荐直接粘贴到终端或使用 quokka.js/python preview 等专用插件。

Code Runner 默认不支持运行选中代码段
它默认只运行整个文件,哪怕你高亮了一行 console.log("test"),点运行按钮也还是会执行全文件。这不是配置没开对,是插件本身设计如此——code-runner.runInTerminal 和 code-runner.preserveFocus 这类设置管的是终端行为,不是执行范围。
真正能跑选中代码的,得靠「自定义执行命令」+「临时文件」机制,而且必须配合语言特定的 runner 配置。
Python/JavaScript 等常见语言怎么配选中代码运行
核心思路:把选中内容写入一个临时 .py 或 .js 文件,再调用对应解释器执行它。VSCode 会自动把选中内容传给 code-runner.executorMap 中定义的命令,变量是 $selectedText。
- 打开 VSCode 设置(Ctrl+,),搜
code-runner.executorMap,点击「在 settings.json 中编辑」 - 添加或修改对应语言的执行命令,例如 Python:
"python": "echo '$selectedText' | python -"
- JavaScript 更稳妥用
node -e:"javascript": "node -e \"$selectedText\""
(注意 Windows 用户需改用双引号转义,或换用 PowerShell 脚本) - 注意:如果选中代码含多行、缩进或变量依赖上下文,
-e或管道方式大概率报错,此时必须写临时文件——但 Code Runner 原生不提供$tempFile变量,得靠外部脚本中转
为什么直接粘贴到终端里反而更可靠
因为选中代码往往不是独立可执行单元:可能依赖前面定义的 const data = [...],或包含未闭合的函数体,甚至只是半句 if (x > 。Code Runner 强行执行时不会报“语法错误”,而是报 ReferenceError 或 SyntaxError,但错误位置指向临时文件第1行,根本看不出哪错了。
- 浏览器 DevTools 控制台、Python 的
python -i交互模式、Node 的nodeREPL,天然支持粘贴多行+保持上下文 - VSCode 自带的
Terminal: Create New Terminal(Ctrl+Shift+`)后,直接 Ctrl+V 回车,比配 Code Runner 快且反馈明确 - 如果真要一键运行选中段,不如装
Quokka.js(JS/TS)或Python Preview(Python),它们专为片段执行设计,会自动补环境、显结果、标错误行
别忽略编辑器底层限制:没有“选中即上下文”的魔法
VSCode 插件拿到的 $selectedText 就是一串纯文本,它不知道你选的是函数调用、对象属性,还是注释中间截出来的一行。Code Runner 不分析 AST,也不模拟作用域链——它只负责把字符串喂给 shell。
所以,当你要试一段 arr.map(x => x * 2),而 arr 在文件顶部定义时,单独运行这行必报 ReferenceError: arr is not defined。这不是插件 bug,是所有基于文本选择的执行机制共有的边界。











