如何更改远程wsl vscode中的默认集成终端文件夹

jon*_*ib3 6 visual-studio-code windows-subsystem-for-linux wsl-2

自从我在电脑上运行 Windows 修复以来,我目前遇到了一个非常烦人的问题。我的 wsl 远程 vscode 由于某种原因无法在网上找到,无法打开终端中的当前文件夹。相反,它会打开 vscode appdata 窗口文件夹(/mnt/c/Users/Jonathan/AppData/Local/Programs/Microsoft VS Code),如下面链接的图像所示:

我当前的工作空间

在集成终端结果中打开

我的远程 settings.json 文件:

{
  "go.autocompleteUnimportedPackages": true,
  "terminal.integrated.profiles.linux": {
    "bash": {
      "path": "bash",
      "icon": "terminal-bash",
      "cwd": "/home/jonathanr/Documents/workspace"
    },
    "zsh": {
      "path": "zsh"
    },
    "fish": {
      "path": "fish"
    },
    "tmux": {
      "path": "tmux",
      "icon": "terminal-tmux"
    },
    "pwsh": {
      "path": "pwsh",
      "icon": "terminal-powershell"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

非常感谢您的帮助!

jon*_*ib3 11

所以,事实证明我找到了解决方案。对于任何遇到此问题的人来说,问题出在(至少在我的情况下)vscode 运行 WSL 的环境变量之一。它被称为PRE_NAMESPACE_PWD。如果您在启用调试的情况下运行 WSL(为此,只需转到 WSL 远程扩展设置并打开该Remote WSL:Debug 选项)。您会注意到 WSL 命令中的“env”选项以及其中列出的所有环境变量,如果继续滚动,您会注意到两个变量:PRE_NAMESPACE_PWDPWD。在此问题中,PRE_NAMESPACE_PWD指向 Windows vscode 文件夹而不是 WSL 中的当前工作区文件夹,并且PWD变量正在使用此文件夹。总而言之,我只是导出了这个PRE_NAMESPACE_PWD变量及其值,${cwd}该值是获取 vscode 中当前工作区文件夹的命令。为此,只需将此行添加到远程 Settings.json 文件中:

"terminal.integrated.env.linux": {
    "PRE_NAMESPACE_PWD": "${cwd}"
  }
Run Code Online (Sandbox Code Playgroud)

就是这样,现在每次您单击“使用集成终端打开”时,您的终端都会在正确的工作区目录中打开。