You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS Code Remote-SSH:拖拽文件夹至终端无效(文件可正常拖拽)

解决VS Code Remote-SSH拖拽文件夹到终端无法粘贴正确路径的问题

问题本质

这是VS Code Remote-SSH扩展在跨平台(Windows本地连接Linux远程)场景下的路径转换逻辑缺陷:拖拽文件时能正确映射为远程绝对路径,但拖拽文件夹时会错误输出file://或vscode-remote://格式的URI,甚至无响应。不属于终端或shell本身的问题,是扩展的兼容性bug,在部分VS Code版本中存在。

解决方案

1. 修改VS Code核心设置

打开VS Code的设置(快捷键Ctrl+,),切换到远程工作区设置(确保针对当前SSH连接配置),添加以下内容:

{
  "terminal.integrated.pasteFileURIs": false,
  "remote.terminal.integrated.pasteFileURIs": false,
  "terminal.integrated.fileProtocolHandling": "auto"
}
  • terminal.integrated.pasteFileURIs:禁用URI格式粘贴,强制输出系统原生绝对路径
  • remote.terminal.integrated.pasteFileURIs:针对远程终端的同名配置,覆盖全局设置
  • terminal.integrated.fileProtocolHandling:让终端自动识别并转换文件协议路径为对应系统的绝对路径

保存设置后重启Remote-SSH连接,测试拖拽文件夹的效果。

2. 使用第三方扩展补全功能

如果上述设置无效,可安装支持Remote-SSH场景的路径处理扩展:

  • Terminal Paste Path:自定义拖拽文件/文件夹时的粘贴格式,可强制输出远程绝对路径
  • Path Picker:通过快捷键或右键菜单快速插入文件/文件夹的远程路径,替代拖拽操作

3. 临时Shell Workaround(.bashrc wrapper)

若需快速临时解决,可在远程Linux的.bashrc中添加路径转换逻辑,自动处理剪贴板中的URI:

# 处理拖拽文件夹的URI路径转换
fix_pasted_path() {
  local content=$(xclip -o -selection clipboard 2>/dev/null)
  if [[ -z "$content" ]]; then return; fi
  # 转换file://格式
  if [[ "$content" == file://* ]]; then
    echo "${content#file://}" | tr '\\' '/'
  # 转换vscode-remote://格式
  elif [[ "$content" == vscode-remote://* ]]; then
    echo "${content#vscode-remote://*/}" | tr '\\' '/'
  else
    echo "$content"
  fi
}
# 替换默认粘贴行为(仅bash生效)
bind '"\e[2~": "\C-u$(fix_pasted_path)\C-m"'

保存后执行source ~/.bashrc生效,此方法依赖xclip工具(可通过apt install xclip安装),仅针对bash终端生效。

内容的提问来源于stack exchange,提问作者user22100699

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 08:12:33