vscode terminal.goToRecentDirectory 不是 shell-aware

db2dz4w8  于 9个月前  发布在  Vscode
关注(0)|答案(6)|浏览(89)

壳集成功能可以被任意REPL类程序使用。这包括cwd的检测。不幸的是,当前的workbench.action.terminal.goToRecentDirectory实现无法优雅地处理这种情况,因为它似乎总是向终端发送类似cd $dir\n的东西。
这是Julia(切换到shell模式使命令起作用,但很繁琐)的情况:

如果REPL类可以在启动时注册一个模板字符串,那么VS Code将发送该字符串而不是cd $dir,那就太棒了。例如:

  1. OSC 633 ; P ; cdTemplate='cd("$dir")' ST
hfyxw5xn

hfyxw5xn1#

好主意👍。我想我们还需要考虑\/是否更受欢迎,以及像在git bash中那样的特殊路径Map,将c:\Users转换为/c/Users

tvmytwxo

tvmytwxo2#

cc @zadjii-msft

e4yzc0pl

e4yzc0pl3#

我认为633 P也是正确的顺序,因为它旨在为终端设置“属性”,这些属性是一次性设置的,而不是其他非常常见的属性。

sh7euo9m

sh7euo9m4#

是的,这也是我在做的一个评论中提到的。链接。
cmd 是一个有趣的例子,因为切换到另一个驱动器需要 cd /d {path}
如果你真的要这样做,我们可以尝试跟进。我确信在某个地方有一个边缘情况,其中一个 shell 会接受用单引号包裹的路径,而其他 shell 则接受双引号包裹的路径。
我个人也不打算在我们从历史记录中合成的任何命令末尾发送 \r 。所以,如果我们最终在命令行上有 cd c:\foo ,有人可以先回去编辑它。

cuxqih21

cuxqih215#

我本人也不打算在从历史记录合成的任何命令末尾发送回车符(\r)。因此,如果我们在命令行上最终得到cd c:\foo这样的命令,有人可以先回去编辑它。
@zadjii-msft我们有一个模式,如果你按住alt键查看帮助信息,我们不会发送回车符:

nwlqm0z1

nwlqm0z16#

哦,这很酷,我得记住。

相关问题