vscode 终端进入最近目录应该标准化路径格式,

fafcakar  于 6个月前  发布在  Vscode
关注(0)|答案(4)|浏览(62)

当前,根据不同的shell,会添加各种路径格式。例如,对于同一个文件夹,以下是pwsh、wsl(bash)和git bash的显示:

我们应该将路径转换为URI,并以一致的格式存储它们。当触发最近目录时,可以将路径更改回针对所涉及shell的正确格式。
这从技术上讲是一个全平台问题,但在实践中,它可能只会在Windows上出现。

crcmnpdw

crcmnpdw1#

@Tyriar,我已经提交了一个PR来解决这个问题。然而,这只是一个最小化的实现,仅仅统一了视觉路径格式。
另一方面,我能想到的理想情况如下:执行 Go To Recent Directory... 时,我在选择器上看到项目 /C:/Github/microsoft/vscode-docs(或其他类似的东西),没有任何重复项(其他格式)。当我选择它时,无论我当时使用的是哪种shell类型(即 GitBashWSLCMD/PWSH),都会在shell中出现一个指向该目录的 cd 命令,并成功地将其当前工作目录更改为该目录。我是说,在 GitBash 上可以切换到 /c/...,或者在 WSL 上可以切换到 /mnt/c/...
这是你实际上想要的吗 @Tyriar?

fiei3ece

fiei3ece2#

是的,这就是我的想法。换句话说,在发送时要考虑shell类型。我们在preparePathForShell助手中确实有一些wsl帮助程序(我认为那应该是正确的名称),我已经连接起来了,所以实际上部分工作已经完成了🤔

bnlyeluc

bnlyeluc3#

我不再处理这个问题了,所以,亲爱的社区,请随意为这个问题做出贡献。
@Tyriar 我为这个问题提交了另一个PR,但正如我在描述中提到的,它不是一个准备好审查的。这只是为了帮助任何想要解决这个问题的人。所以如果你觉得可以的话,就关闭它吧。
我关闭了第一个PR,因为那不是一个可行的解决方案。

ymzxtsji

ymzxtsji4#

跨发布 #158267
这个正在进行中,但它与我认为我们应该做的事情有所不同,即:

  • 当目录被添加到列表时,将它们存储为URI( URI.toString() ?)以确保它们都是一致的,这包括在必要时设置远程权限。
  • 当使用目录时,将其转换为shell类型的格式。这主要发生在PR中,但我们应该让它更加通用。例如创建一个类似这样的函数:
interface ITerminalBackend {
  formatUriForShellType(path: URI, shellType: TerminalShellType): Promise<string> | string;
}

这个函数只有在实际需要时才会去后端,例如我知道WSL路径是由于某些边缘情况而需要的,但是cygpath是否可以完全基于驱动器字母进行评估?

相关问题