Terminal: Windows 终端:通过单个命令在当前文件夹中打开终端

创建于 2019-05-09  ·  43评论  ·  资料来源: microsoft/terminal

目前我可以通过在资源管理器的地址栏中输入cmdpowershell来打开当前文件夹中的 cmd 和 powershell(通过 CTRL+D 打开,所以它非常简洁快捷)。

如果新的 Windows 终端也能做到这一点,那就太好了。 但由于它是 Windows 应用商店应用,我找不到将它添加到 PATH 的简单方法。 打开时它也不尊重当前文件夹。 它始终从默认文件夹开始( C:\WINDOWS\system32用于 cmd, ~用于 Ubuntu)。

如果这是可能的,那就太好了:

  • 可以将 Windows 终端添加到 PATH。
  • 在 Windows 终端的当前文件夹中打开命令行。

如果它可以用一个简短的命令打开也很好。
可执行文件当前称为WindowsTerminal 。 如果我们可以简单地输入类似term东西就好

Resolution-Answered

最有用的评论

从 v0.5 开始,这实际上不再起作用。 您需要设置"startingDirectory": null才能使其实际工作。 该修复在 #2515 中无意中倒退。

所有43条评论

如果你使用wt.exe会发生什么?

https://github.com/microsoft/Terminal/blob/af7316c130059ba15fe16ff0d13608d956a2b449/src/cascadia/Cas​​cadiaPackage/Package.appxmanifest#L51

别名应该已经启动了 WindowsTerminal,但我不确定它是否在您指定的路径中启动

@joandrsn这很棒,我不知道。 谢谢。

@joandrsn谢谢! 它甚至会在当前目录中启动!

如何将目录路径传递给 wt.exe。 像这样的东西:

wt.exe "C:\GitHub"

已尝试但始终在 CMD 和 PowerShell 的默认文件夹中打开。

我可以使用ubuntu run在当前文件夹中打开 WSL Ubuntu shell。 但wt总是在默认文件夹中打开

从您的profiles.json 中删除startingDirectory

你好@DHowett-MSFT,
有没有办法让Windows Terminal在与当前标签相同的文件夹中打开新标签? 我想要与Mac OS X上存在的行为相同的行为: https :
提前致谢!

从您的profiles.json 中删除startingDirectory

@DHowett-MSFT,这在最新版本 0.5.2661.0 中不起作用:(

从您的profiles.json 中删除startingDirectory

对我来说,它也不起作用:(

从 v0.5 开始,这实际上不再起作用。 您需要设置"startingDirectory": null才能使其实际工作。 该修复在 #2515 中无意中倒退。

我还想在当前目录中打开新标签

从 v0.5 开始,这实际上不再起作用。 您需要设置"startingDirectory": null才能使其实际工作。 该修复在 #2515 中无意中倒退。

@zadjii-msft ,这在 v0.5.2681.0 中不起作用

从 v0.5 开始,这实际上不再起作用。 您需要设置"startingDirectory": null才能使其实际工作。 该修复在 #2515 中无意中倒退。

也不适用于 0.5.2762.0..
我试过删除值,设置为空..两者都没有改变任何东西..

需要明确的是,_removing startingDirectory而不是将其设置为null _ 不是一个即将回归的功能; 我们正在寻找关于何时准确应用startingDirectory的替代方法,但该设置总是能够通过将其设置为null来抑制。

从 v0.5 开始,这实际上不再起作用。 您需要设置"startingDirectory": null才能使其实际工作。 该修复在 #2515 中无意中倒退。

也不适用于 0.5.2762.0..
我试过删除值,设置为空..两者都没有改变任何东西..

"startingDirectory": null对我有用 - 它需要放在特定的配置文件下,而不是作为根级元素

@DHowett-MSFT 在我看来,在配置文件 ( startingDirectory ) 中设置可以通过传入命令行参数来覆盖的方法通常很常见。 也许我在这里没有遇到问题:)

如果我还记得上个月的谈话,那是:

通过从您的用户配置文件中删除它来清除“startingDirectory”设置(在两个或三个默认提供的配置文件的特定情况下),而不是将其设置为null来清除它,这不是一个功能回来。

607 指定我们将支持命令行参数,其中之一将是起始目录覆盖。

这似乎符合我对你对这次谈话的理解。 :微笑:

对我来说,设置 "startingDirectory": "." 做这份工作。

如果从 Windows 资源管理器启动,终端默认打开为"%USERPROFILE%"null是否还有另一个问题?

@carlinmack我认为这完全没有必要。

  • 如果您通过“开始”菜单快捷方式或通过在 Win+R 中键入“wt”启动 Windows 终端,则它默认为用户的主目录。 这意味着,如果您使用"startingDirectory": "."它们仍会在用户的主文件夹 ( %USERPROFILE% ) 中打开。
  • 如果您从 Windows 资源管理器地址栏启动 wt,或者通过导航到某个文件夹的 cmd.exe(或其他 shell)之类的东西启动,那么"startingDirectory": "."将确保 Windows 终端在您所在的目录中打开。
  • 但是......您在 Windows 终端会话中打开的任何其他选项卡将从启动时刻开始在“当前工作目录”中打开,这可能是一个小烦恼。

如果您通过“开始”菜单快捷方式或通过在 Win+R 中键入“wt”启动 Windows 终端,则它默认为用户的主目录。 这意味着如果你使用 "startingDirectory": "." 它们仍然在用户的主文件夹 (%USERPROFILE%) 中打开。

在这种情况下,它默认为 system32。

谢谢@torpederos

"startingDirectory": " . "
"startingDirectory": "% __ CD __ %"

检查。 两者对我来说都很好。 我的解决方案

@RickStrahl写了一篇关于这个问题的好博客。 检查一下

在我的情况下,这有效。

"profiles":
    {
        "defaults":
        {
            "startingDirectory": "."
        },

"startingDirectory": "."有效,但是当我从搜索中打开终端时,它默认为 system32。
没有指定路径时,有没有办法在用户目录中打开?

"startingDirectory": "."有效,但是当我从搜索中打开终端时,它默认为 system32。
没有指定路径时,有没有办法在用户目录中打开?

我有同样的问题。 我通过在 .bashrc 文件末尾添加以下行来修复它。

export CURR_DIRECTORY=`pwd`
if [ "$CURR_DIRECTORY" = "/mnt/c/WINDOWS/system32" ]; then
    cd ~
fi

@manishprivet 的解决方案很棒,除了为了正常工作,我将system32更改System32 。 运行pwd并复制输出是个好主意。

我通过添加“在此处打开终端”以右键单击找到了一种解决方法。

第1步:-
从所有配置文件的 settings.json 中删除起始目录。

第2步:-
根据这篇文章添加打开的终端以右键单击。
https://github.com/microsoft/terminal/issues/1060#issuecomment -497539461
我将第二个注册表值从@="%LOCALAPPDATA%\\Microsoft\\WindowsApps\\wt.exe"更改@="C:\Users\[your username]\AppData\Local\Microsoft\WindowsApps\wt.exe -d ."

修改后的行为:
因此,每当我使用搜索/任务栏/快捷方式打开终端时,它都会在我的用户文件夹中打开。
每当我想使用资源管理器打开终端时,我只需右键单击并选择Windows terminal here选项。

注意 1:不要忘记在第二个注册表值的末尾添加-d . ,否则,这将不起作用。

注 2:在资源管理器栏中输入wt仍会在 system32 中打开终端。 如果您想使用“资源管理器栏”在当前文件夹中打开终端,您仍然应该输入wt -d .

只需添加

"startingDirectory": null

它适用于wt V1.0。

如果您更喜欢在SHIFT-Menu 中显示 wt,就像“在此处打开 PowerShell 窗口”或打开 WSL 选项一样,您可以将此注册表文件合并到您的注册表中。

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\wt]
@="Open Windows Terminal here"
"ShowBasedOnVelocityId"=dword:00639bc8
"Extended"=""

[HKEY_CLASSES_ROOT\Directory\Background\shell\wt\command]
@="C:\\Users\\[YourUserName]\\AppData\\Local\\Microsoft\\WindowsApps\\wt.exe"

请注意startingDirectory参数应该放在 JSON 结构中的这个位置:

{
    //...

    "profiles":
    {
        "defaults":
        {
            // Put settings here that you want to apply to all profiles.

            // Attempt to start in current directory
            // https://github.com/microsoft/terminal/issues/620
            "startingDirectory": "."
        }
    }
}

我还没有看到可以执行以下操作的解决方案:

  1. 当我从开始菜单打开终端时,允许我选择一个默认目录。
  2. 从资源管理器窗口运行 wt.exe 将打开终端到该目录。

这可能吗?

根据我的调查,这在技术上是不可能的。

如果您想让两者都工作,则需要在资源管理器地址栏中使用wt -d . 。 这将使从开始菜单启动终端和运行框的工作方式与以前相同,并且仍然让您在资源管理器的 CWD 中打开终端

从我最初的探索这里是我发现的基于https://docs.microsoft.com/en-us/windows/terminal/command-line-arguments?tabs=windows

方法一:

  1. 按WIN键+R
  2. 输入wt -d D:\SomeDirectory

这将使用该目录打开 settings.json 中存在的默认 shell
PS 默认根据shell的操作系统选择路径

方法二:

  1. 使用文件资源管理器转到所需的文件夹
  2. 在所需文件夹的地址栏中键入wt -d .

@AndeYashwanth效果很好,谢谢。 现在我可以从任务栏在我的用户目录中打开它,只有当我右键单击时才在当前目录中打开它😎

感谢@29kartik方法 1 对我wt -d %d的自定义终端命令,以便现在它的终端快捷方式在当前 repo 的目录中启动 WT。 💯

我已将其添加到此特定文件夹中打开

 "startingDirectory": "C:\\webdev"

这是我通过上下文菜单快捷方式对其的看法: https :

@尼克拉斐尔

我还没有看到可以执行以下操作的解决方案:

  1. 当我从开始菜单打开终端时,允许我选择一个默认目录。
  2. 从资源管理器窗口运行 wt.exe 将打开终端到该目录。

settings.json有这个:

{
    "profiles": {
        "defaults": {
            "startingDirectory": "."
        }
    }
}

从资源管理器位置框、 win + r或其他程序(VS Code 等)启动时,使 Windows 终端在我的当前目录中启动。 但是,当从“开始”菜单开始时,无论是通过搜索还是导航到快捷方式,它都以C:\WINDOWS\system32开头。

为了解决“开始”菜单问题,我将wt.exe的快捷方式固定到“开始”菜单( where wt告诉其位置),根据我的喜好重命名该快捷方式,然后将其修改为:

Start in: %USERPROFILE%

现在,当从“开始”菜单启动时,Windows 终端会在我的主目录中启动。

如果 Windows 终端默认情况下不会更改其目录以使其更加透明,那就太好了。 没有很多其他程序可以做到这一点。

我还想知道wt.exe的快捷方式是否可以由安装程序自动创建。

因此,上述答案都不适用于我的用例。 我想要做的是使用alt+shift+-打开一个新选项卡并保留上一个文件夹。 我尝试在 JSON 的不同位置使用null".""%__CD__%"作为"startingDirectory"值。 我正在使用 Windows Terminal Preview 的1.4.2652.0版本。

一个不错的解决方案是有一个新选项,如"keepCurrentDirectoryOnNewTab": true或类似的东西。 另一种方式(Kitty 使用的)在指定目录时有一个名为current的特殊值。

@frankitox您可能对#3158 等 20 个被该线程欺骗的问题感兴趣
image

关于为什么在 Windows 上很难或几乎不可能正确完成这一问题的讨论很多。

版本:1.3.2651.0

就我而言,它有效。

    "profiles":
    {
        "defaults":
        {
            // Put settings here that you want to apply to all profiles.
            "startingDirectory": "."
        },

此外,您可以使用"startingDirectory": "%__CD__%"

我参加聚会可能很晚,但在 Windows 10 Pro 20H2 中,您只需在地址栏中输入wt

如何将目录路径传递给 wt.exe。 像这样的东西:

wt.exe "C:\GitHub"

不知道你有没有找到 -d 和 path

wt -d .

在 WSL2 中运行良好

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

alabuzhev picture alabuzhev  ·  3评论

ghost picture ghost  ·  3评论

ghvanderweg picture ghvanderweg  ·  3评论

mrmlnc picture mrmlnc  ·  3评论

Wid-Mimosa picture Wid-Mimosa  ·  3评论