VSCode远程终端剪贴板同步需手动启用terminal.integrated.clipboardIntegration.enabled为true,并配置contextMenu和rightClickBehavior;WSL2需确保clip.exe路径正确、权限正常;粘贴异常多因网页格式污染,推荐Ctrl+Shift+V安全粘贴。

terminal.integrated.clipboardIntegration.enabled 未启用
VSCode 远程连接 Linux(SSH/WSL/Container)时,默认不开启剪贴板同步,terminal.integrated.clipboardIntegration.enabled 是控制该功能的开关。它在本地 VSCode 中默认为 true,但在远程会话中多数情况下是 false —— 这不是 bug,而是安全策略:防止远程终端意外读写本地剪贴板。
必须手动启用:
- 打开远程环境的
settings.json(不是本地的!可通过命令面板 →Preferences: Open Remote Settings (JSON)) - 添加
"terminal.integrated.clipboardIntegration.enabled": true - 重启集成终端(关闭再打开 Terminal 标签页)
注意:该设置仅对终端生效,编辑器区域的复制粘贴仍走系统级剪贴板,不受此开关影响。
WSL2 下 clip.exe 权限或路径问题
WSL2 不直接访问 Windows 剪贴板,需通过 clip.exe 桥接。常见失败点不是“没装”,而是权限或路径不对:
-
clip.exe必须可执行:运行which clip.exe,若返回空,说明 WSL 无法定位到 Windows 的%windir%\System32\clip.exe;可尝试用完整路径/mnt/c/Windows/System32/clip.exe - 权限被拦截:某些安全软件(如 Defender 实时保护、第三方杀软)会阻止 WSL 调用
clip.exe;临时禁用后测试是否恢复 - WSL 用户无权执行:非 root 用户调用
clip.exe可能失败;可在 WSL 中运行sudo clip.exe测试(不推荐长期用 sudo,应修复权限)
验证是否通路:在 WSL 终端里执行 echo test | /mnt/c/Windows/System32/clip.exe,然后切回 Windows 记事本按 Ctrl+V —— 若能粘出 test,说明桥接正常。
Remote-SSH 终端里右键菜单无“粘贴”选项
远程 SSH 终端的右键行为由两个关键配置共同决定,缺一不可:
-
"terminal.integrated.contextMenu": true—— 启用上下文菜单本身(否则右键根本不弹窗) -
"terminal.integrated.rightClickBehavior": "paste"或"copyPaste"—— 决定右键动作;设为"default"时只显示菜单,但“粘贴”项常因剪贴板未就绪而置灰
特别注意:"paste" 模式下,右键直接粘贴(不弹菜单),适合快速操作;"copyPaste" 模式下,有选中文本时右键复制,无选中时右键粘贴——更符合直觉,也更少误触发。
如果改完设置仍无效,大概率是远程端的终端模拟器(如 bash 或 zsh)拦截了鼠标事件。此时优先用 Ctrl+Shift+V(安全粘贴)替代右键,它绕过终端渲染层,直接走 VSCode 剪贴板 API。
从网页复制代码进远程终端后命令执行异常
这不是同步失败,而是内容污染:网页复制的代码常含零宽空格(\u200b)、ANSI 颜色码、换行符混用(\r\n vs \n),远程终端 shell 解析失败,报错如 command not found 或 syntax error near unexpected token。
- 永远别用鼠标全选 + Ctrl+C 复制 GitHub/MDN 的代码块;点代码块右上角的
Copy按钮,它输出纯文本 - 粘贴前先清空剪贴板:在本地记事本粘一次再复制,可剥离格式
- 远程终端中粘贴后,立刻执行
cat -A查看隐藏字符(^M表示\r,M-bM-^@类似表示零宽空格) - 终极保险:用
Ctrl+Shift+V粘贴,VSCode 会自动 strip 所有非打印字符和富文本元数据
真正容易被忽略的是:远程终端的 sendKeybindingsToShell 设置。若为 true,Ctrl+V 会被 shell 截获而非 VSCode 处理,导致粘贴失效或乱码 —— 务必确认该值为 false。


















