如何在与上一个目录相同的目录中生成一个新选项卡?

DJ *_*and 16 windows-terminal

我只想在与我所在的上一个选项卡相同的文件夹中启动一个新选项卡。这可能吗,如果可以,如何?顺便说一下,这是使用 Windows 终端。

小智 15

  1. 打开Windows终端
  2. 单击下拉按钮
  3. 单击设置选项
  4. startingDirectory值设置为"./"
例子
"profiles":
    {
        "defaults":
        {
            // Put settings here that you want to apply to all profiles.
            "startingDirectory": "./" <---- set this value
        }

Run Code Online (Sandbox Code Playgroud)

  • 这在 PowerShell 上对我不起作用,它将起始目录设置为 System32 (6认同)

HKT*_*Lee 12

兹什

如果您使用的是 Zsh,则可以将其添加到~/.zshrc

[[ -n "$WT_SESSION" ]] && {
  chpwd() {
    echo -en '\e]9;9;"'
    wslpath -w "$PWD" | tr -d '\n'
    echo -en '"\x07'
  }
}

Run Code Online (Sandbox Code Playgroud)

之后,您可以使用 Windows 终端中的重复选项卡在新选项卡中打开同一目录


重击

你也可以在 Bash 中做类似的事情

my_prompt() {
  echo -en '\e]9;9;"'
  wslpath -w "$PWD" | tr -d '\n'
  echo -en '"\x07'
}

export PROMPT_COMMAND=my_prompt
Run Code Online (Sandbox Code Playgroud)

解释

$WT_SESSION是Windows Terminal设置的环境。这将确保我们仅在 WT 中定义此转义序列。

chpwd()是一个回调函数,每当 Zsh 更改工作目录时都会调用它。

在内部chpwd()它将发送一个OSC 9;9转义序列。这将告诉终端(包括 Windows 终端在内的许多终端)shell 的 CWD 已更改。

转义序列的语法OSC 9;9\e]9;9;"C:\Temp\"\x07

序列C:\Temp\中的 必须是 Windows 样式的路径。它可以指向 WSL 中的某个路径(例如\\wsl.localhost\Ubuntu-20.04\home\superman\bin)。当打开新选项卡时,shell 将打开相应的 UNIX 路径(例如/home/superman/bin)。

  • 这是目前解决此问题的唯一答案。此外,它也得到了很好的解释。 (3认同)

Rav*_*ana 11

Windows 终端命令行界面 ( wt.exe) 可用于实现此目的,但使用命令而不是键盘快捷键。

wt -w 0 nt -d .
Run Code Online (Sandbox Code Playgroud)
  • -w 0:使用当前终端窗口。
  • ntnew-tab:创建一个新选项卡。
    • -d .:在当前目录启动进程。

文档: https: //learn.microsoft.com/windows/terminal/command-line-arguments


Lea*_*tal 6

这目前是不可能的,正如此处所解释的https://github.com/microsoft/terminal/issues/1437该问题目前已关闭,但将来可能会重新打开。

  • 现在可以使用“OSC 9;9”序列实现这一点。请检查下面的答案以了解如何操作 (3认同)
  • 更新 - 现在正在这个问题下进行跟踪,在撰写本文时尚未就规范达成一致 https://github.com/microsoft/terminal/issues/3158 (2认同)