需勾选“Code-runner: Run In Terminal”,配置executorMap启用交互命令(如Python加-u参数),关闭clearPreviousOutput,用Ctrl+Option+N快捷键运行,必要时设terminalRootPath调用系统终端。

如果您在 VSCode 中使用 Code Runner 运行需要用户输入的程序(如 Python 的 input()、C 的 scanf、Java 的 Scanner),默认情况下终端可能无法正确接收输入,导致程序卡住或报错。以下是解决此问题的步骤:
本文运行环境:MacBook Air,macOS Sequoia。
一、修改 Code Runner 默认执行终端
Code Runner 默认使用集成终端的非交互模式运行代码,需切换为支持标准输入的终端类型。该设置可确保运行时能响应键盘输入。
1、打开 VSCode 设置(快捷键 Cmd + ,)。
2、在搜索框中输入 code-runner.runInTerminal。
3、勾选 Code-runner: Run In Terminal 选项。
4、保存设置并重启 VSCode。
二、配置 code-runner.executorMap 自定义执行命令
针对不同语言,需在 executorMap 中显式调用支持交互的解释器/编译器命令,避免使用重定向或静默模式。
1、打开 VSCode 设置,搜索 settings.json 并点击“在 settings.json 中编辑”。
2、在 "code-runner.executorMap" 对象中添加或修改对应语言条目,例如 Python:
"python": "python -u $fileName"
3、对于 C 语言,修改为:
"c": "cd $dir && gcc $fileName -o $fileNameWithoutExt && ./$fileNameWithoutExt"
4、对于 Java,确保包含运行步骤且不跳过标准输入:
"java": "cd $dir && javac $fileName && java $fileNameWithoutExt"
三、禁用 code-runner.clearPreviousOutput
启用该选项可能导致终端缓冲区刷新干扰输入等待状态,关闭后可维持输入提示的可见性与响应连续性。
1、打开 VSCode 设置,搜索 code-runner.clearPreviousOutput。
2、取消勾选该选项。
3、确认修改已写入 settings.json 文件。
四、使用 Ctrl+Alt+N 替代右键运行
通过快捷键触发运行可确保命令在当前集成终端上下文中执行,而非新建无输入能力的输出面板,从而保留 stdin 连接。
1、确保未自定义覆盖默认快捷键。
2、编写含 input() 或 scanf() 的代码后,将光标置于文件内。
3、按下 Ctrl+Alt+N(Windows/Linux)或 Ctrl+Option+N(macOS) 启动运行。
五、临时启用外部终端运行
当集成终端仍无法稳定接收输入时,可强制 Code Runner 调用系统原生终端应用,获得完整 TTY 支持。
1、在 settings.json 中找到 "code-runner.terminalRootPath" 项。
2、将其值设为 "/Applications/Utilities/Terminal.app"(macOS)或 "C:\\Windows\\System32\\cmd.exe"(Windows)。
3、同时确保 "code-runner.runInTerminal" 已启用。
4、保存后再次运行代码,系统终端窗口将自动弹出并等待输入。









