当前,根据不同的shell,会添加各种路径格式。例如,对于同一个文件夹,以下是pwsh、wsl(bash)和git bash的显示:
我们应该将路径转换为URI,并以一致的格式存储它们。当触发最近目录时,可以将路径更改回针对所涉及shell的正确格式。这从技术上讲是一个全平台问题,但在实践中,它可能只会在Windows上出现。
crcmnpdw1#
@Tyriar,我已经提交了一个PR来解决这个问题。然而,这只是一个最小化的实现,仅仅统一了视觉路径格式。另一方面,我能想到的理想情况如下:执行 Go To Recent Directory... 时,我在选择器上看到项目 /C:/Github/microsoft/vscode-docs(或其他类似的东西),没有任何重复项(其他格式)。当我选择它时,无论我当时使用的是哪种shell类型(即 GitBash、WSL 或 CMD/PWSH),都会在shell中出现一个指向该目录的 cd 命令,并成功地将其当前工作目录更改为该目录。我是说,在 GitBash 上可以切换到 /c/...,或者在 WSL 上可以切换到 /mnt/c/...。这是你实际上想要的吗 @Tyriar?
Go To Recent Directory...
/C:/Github/microsoft/vscode-docs
GitBash
WSL
CMD
PWSH
cd
/c/...
/mnt/c/...
fiei3ece2#
是的,这就是我的想法。换句话说,在发送时要考虑shell类型。我们在preparePathForShell助手中确实有一些wsl帮助程序(我认为那应该是正确的名称),我已经连接起来了,所以实际上部分工作已经完成了🤔
bnlyeluc3#
我不再处理这个问题了,所以,亲爱的社区,请随意为这个问题做出贡献。@Tyriar 我为这个问题提交了另一个PR,但正如我在描述中提到的,它不是一个准备好审查的。这只是为了帮助任何想要解决这个问题的人。所以如果你觉得可以的话,就关闭它吧。我关闭了第一个PR,因为那不是一个可行的解决方案。
ymzxtsji4#
跨发布 #158267这个正在进行中,但它与我认为我们应该做的事情有所不同,即:
URI.toString()
interface ITerminalBackend { formatUriForShellType(path: URI, shellType: TerminalShellType): Promise<string> | string; }
这个函数只有在实际需要时才会去后端,例如我知道WSL路径是由于某些边缘情况而需要的,但是cygpath是否可以完全基于驱动器字母进行评估?
4条答案
按热度按时间crcmnpdw1#
@Tyriar,我已经提交了一个PR来解决这个问题。然而,这只是一个最小化的实现,仅仅统一了视觉路径格式。
另一方面,我能想到的理想情况如下:执行
Go To Recent Directory...
时,我在选择器上看到项目/C:/Github/microsoft/vscode-docs
(或其他类似的东西),没有任何重复项(其他格式)。当我选择它时,无论我当时使用的是哪种shell类型(即GitBash
、WSL
或CMD
/PWSH
),都会在shell中出现一个指向该目录的cd
命令,并成功地将其当前工作目录更改为该目录。我是说,在GitBash
上可以切换到/c/...
,或者在WSL
上可以切换到/mnt/c/...
。这是你实际上想要的吗 @Tyriar?
fiei3ece2#
是的,这就是我的想法。换句话说,在发送时要考虑shell类型。我们在preparePathForShell助手中确实有一些wsl帮助程序(我认为那应该是正确的名称),我已经连接起来了,所以实际上部分工作已经完成了🤔
bnlyeluc3#
我不再处理这个问题了,所以,亲爱的社区,请随意为这个问题做出贡献。
@Tyriar 我为这个问题提交了另一个PR,但正如我在描述中提到的,它不是一个准备好审查的。这只是为了帮助任何想要解决这个问题的人。所以如果你觉得可以的话,就关闭它吧。
我关闭了第一个PR,因为那不是一个可行的解决方案。
ymzxtsji4#
跨发布 #158267
这个正在进行中,但它与我认为我们应该做的事情有所不同,即:
URI.toString()
?)以确保它们都是一致的,这包括在必要时设置远程权限。这个函数只有在实际需要时才会去后端,例如我知道WSL路径是由于某些边缘情况而需要的,但是cygpath是否可以完全基于驱动器字母进行评估?