21

我只想在与我之前所在的选项卡相同的文件夹中启动一个新选项卡。这可能吗?如果可以,怎么办?顺便说一句,这是与 windows 终端有关的。

4

8 回答 8

7

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

于 2019-08-13T12:33:54.510 回答
6
  1. 打开windows终端
  2. 单击下拉按钮
  3. 点击设置选项
  4. startingDirectory值设置为"./"
例子
"profiles":
    {
        "defaults":
        {
            // Put settings here that you want to apply to all profiles.
            "startingDirectory": "./" <---- set this value
        }

于 2021-03-02T09:26:41.727 回答
5

Zsh

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

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

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


重击

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

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

export PROMPT_COMMAND=my_prompt

解释

$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)。

于 2021-10-24T23:47:32.390 回答
4

我发现了一些有趣的东西……这对我有用……你可以说:

“起始目录”:“./”

在终端配置中......

例子

{
    // Make changes here to the powershell.exe profile.
    "guid": "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
    "name": "Windows PowerShell",
    "commandline": "powershell.exe",
    "startingDirectory": "./",
    "hidden": false
},
于 2020-08-13T14:40:47.317 回答
2

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

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

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

于 2021-07-30T15:52:20.503 回答
1

也与@apena 的帖子类似,因为它是特定于 bash 的。

就我而言,我希望 Debian 在我当前的工作目录中打开。

虽然我不能完全得到这种行为,但我能够使用一些技巧让它打开最后访问的目录(有效地):

在我的 linux 发行版中,我将此添加到我.bashrc的以拦截所有调用cd并将最后一次调用存储到cd我选择的目的地。

cd() {
  builtin cd "$@" ;  echo $PWD > /opt/chdir/lastestdir
}

接下来,由于 Windows 终端不允许我内联命令,我在自定义位置创建了这个批处理脚本:

@echo off
for /F "tokens=*" %%n IN (\\wsl$\Debian\opt\chdir\lastestdir) DO @(wsl.exe -d Debian --cd \\wsl$\Debian%%n)

注意:\\wsl$\Debian是我在 Powershell 中的发行版的路径,\opt\chdir\lastestdir它基于我在上一步中使用的路径。

接下来,我在 Windows 终端中编辑了 Debian 的配置文件以指向我的脚本: WT Debian 配置文件

我愿意接受建议,但这让我很乐意将当前目录复制到下一个选项卡,只要它是我更改目录的最后一个终端。

于 2021-05-06T14:31:40.927 回答
1
dotnet tool install -g p2u
p2u dir ${PWD}

然后CTRL+SHIFT+D
希望它也可以与拆分窗格一起使用

@apena 的想法相同,但现在使用 dotnet 工具。更多详情:https ://github.com/celsojr/p2u

于 2021-04-02T03:48:08.437 回答
1

每次打开选项卡时,您始终可以重写设置 json,但它是特定于 shell 的 hack。

把这个函数放进去$PROFILE(一定要调整$path

function sd {
  $path = 'C:\Users\Admin\AppData\Local\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json'
   ((Get-Content -path $path) -replace '"startingDirectory":.*', ("`"startingDirectory`": `"$pwd`"") -replace "\\", "\\") | Set-Content -Path $path
}

这里采取的解决方案。

于 2020-08-13T15:51:28.743 回答