vscode终端默认不响应ctrl+c和ctrl+v,因快捷键被编辑器拦截并列入commandstoskipshell黑名单;需手动删去"ctrl+c"和"ctrl+v",windows还需启用快速编辑模式,修改后须重启终端面板生效。

VSCode 终端默认不响应 Ctrl+C 和 Ctrl+V,不是你配错了,是它压根没把终端当“常规输入框”来处理——终端有自己的键盘事件分发逻辑,必须手动打开原生终端快捷键支持。
为什么 Ctrl+C 在 VSCode 终端里没反应?
VSCode 内置终端(如 PowerShell、bash)默认拦截了部分快捷键,Ctrl+C 被编辑器捕获用于“取消当前操作”,而非发送给终端进程。尤其在 Windows 上,PowerShell 或 CMD 会收不到中断信号,导致程序卡死、无法退出。
-
Ctrl+C不触发SIGINT,进程继续运行 -
Ctrl+V插入的是编辑器的“粘贴内容”,不是终端原生 paste(可能带换行或格式乱码) - 该问题在 macOS/Linux 的 bash/zsh 中同样存在,只是表现略隐蔽(比如粘贴后光标跳位)
开启 terminal.integrated.enableBell 后仍无效?先关掉这个干扰项
terminal.integrated.enableBell 和复制粘贴无关,但它常被误配——真正起作用的是 terminal.integrated.commandsToSkipShell 这个黑名单配置。VSCode 默认把 Ctrl+C、Ctrl+V 等全列在里面,导致它们根本不会传给 shell。
- 打开设置(
Ctrl+,),搜索commandsToSkipShell - 点击右侧“在 settings.json 中编辑”,删掉
"ctrl+c"和"ctrl+v"(保留其他项,比如"ctrl+f") - 或者直接写成:
"terminal.integrated.commandsToSkipShell": [ "editor.action.toggleTabFocusMode", "workbench.action.terminal.clear" ](即只留真正需要跳过 shell 的命令)
Windows 下 PowerShell/CMD 需额外启用“快速编辑模式”
即使 VSCode 设置正确,Windows 原生命令行宿主(conhost)若禁用快速编辑,Ctrl+V 依然无效——它依赖该模式下的剪贴板 API。
- 右键终端标题栏 → “属性” → 勾选“快速编辑模式”
- 若用 Windows Terminal 替代 conhost,则无需此步(默认支持)
-
Ctrl+C在 PowerShell 中还受$PSDefaultParameterValues干扰,但 VSCode 终端里一般不影响
Mac/Linux 用户注意:iTerm2 或 zsh 插件可能劫持 Ctrl+V
如果你用了 oh-my-zsh + zsh-autosuggestions,Ctrl+V 可能被绑定为“粘贴未执行命令”,实际行为是插入文本但不回车——这不是 VSCode 的锅,是 shell 层级的 key binding 冲突。
- 检查
bind -p | grep quoted-insert,确认quoted-insert是否绑定到Ctrl+V(zsh/bash 默认是) - 若被覆盖,可在
~/.zshrc中加:bindkey '^V' quoted-insert
- VSCode 中粘贴大段代码时,建议用
Shift+Insert作为备用方案(兼容性更好)
最常被忽略的一点:改完 commandsToSkipShell 后必须重启终端面板(关掉再开),而不是仅 reload window。VSCode 不会热重载终端的快捷键映射规则。











