壳集成功能可以被任意REPL类程序使用。这包括cwd
的检测。不幸的是,当前的workbench.action.terminal.goToRecentDirectory
实现无法优雅地处理这种情况,因为它似乎总是向终端发送类似cd $dir\n
的东西。
这是Julia(切换到shell模式使命令起作用,但很繁琐)的情况:
如果REPL类可以在启动时注册一个模板字符串,那么VS Code将发送该字符串而不是cd $dir
,那就太棒了。例如:
OSC 633 ; P ; cdTemplate='cd("$dir")' ST
6条答案
按热度按时间hfyxw5xn1#
好主意👍。我想我们还需要考虑
\
或/
是否更受欢迎,以及像在git bash中那样的特殊路径Map,将c:\Users
转换为/c/Users
。tvmytwxo2#
cc @zadjii-msft
e4yzc0pl3#
我认为
633 P
也是正确的顺序,因为它旨在为终端设置“属性”,这些属性是一次性设置的,而不是其他非常常见的属性。sh7euo9m4#
是的,这也是我在做的一个评论中提到的。链接。
cmd
是一个有趣的例子,因为切换到另一个驱动器需要cd /d {path}
。如果你真的要这样做,我们可以尝试跟进。我确信在某个地方有一个边缘情况,其中一个 shell 会接受用单引号包裹的路径,而其他 shell 则接受双引号包裹的路径。
我个人也不打算在我们从历史记录中合成的任何命令末尾发送
\r
。所以,如果我们最终在命令行上有cd c:\foo
,有人可以先回去编辑它。cuxqih215#
我本人也不打算在从历史记录合成的任何命令末尾发送回车符(\r)。因此,如果我们在命令行上最终得到cd c:\foo这样的命令,有人可以先回去编辑它。
@zadjii-msft我们有一个模式,如果你按住alt键查看帮助信息,我们不会发送回车符:
nwlqm0z16#
哦,这很酷,我得记住。