Terminal: 能够在运行时重命名选项卡标题

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

标签是非常有用的功能,但是随着您打开越来越多的标签,除非您打开标签,否则很难跟踪哪个标签用于哪个目的。 如果我们可以重命名 Tab 并给它一个友好的名称会更好。

从功能的角度来看,我们可以实现选项卡重命名的方法是:

1 - 右键单击​​ -> 重命名

右键单击用户想要重命名的选项卡,这将打开上下文菜单,从上下文菜单中,用户将选择重命名。

选项卡的标题将更改为文本框,用户将能够写入选项卡名称,按键盘上的 Enter 键或单击文本框外的任意位置将应用选项卡标题。 如果用户按下 ESC 键,我们将放弃更改。

image

2 - 双击 - 标签标题

选项卡的标题将更改为文本框,用户将能够写入选项卡名称,按键盘上的 Enter 键或单击文本框外的任意位置将应用选项卡标题。 如果用户按下 ESC 键,我们将放弃更改。

最终结果将如下所示:

image

Area-User Interface Issue-Feature Product-Terminal Resolution-Fix-Committed

最有用的评论

请注意,您还可以在 cmd 中使用title "new title"和 powershell 中的$Host.UI.RawUI.WindowTitle = "new title"从命令行设置标题

所有56条评论

默认情况下,配置文件名称不能用于选项卡标题,但可能是显示路径的选项?

该路径通常在 pompt 中,因此不确定两者都需要它。

路径在那里,因为它是 shell 在那里 _put_ 的东西。 关于这个问题和标题的优点的讨论,#608。 这是一个稍微不同的问题。

默认情况下,配置文件名称不能用于选项卡标题,但可能是显示路径的选项?

该路径通常在 pompt 中,因此不确定两者都需要它。

Profile 只显示 CMD 或 PowerShell .. 但我提议的是能够使用友好名称重命名 Tab。

我很确定这是我在该线程中提出的解决方案之一的子集:

如果我们只使用 2 种模式,我们可以通过两种可能的方式来实现:

  1. 将可选的titleText:string字符串添加到配置文件中。 如果设置了,那么我们将显示该字符串而不是终端的标题。

    • 这具有不默认为配置文件名称的缺点。 用户需要手动设置该字符串。

    • 如果配置文件名称更改,则用户也必须手动更改此名称。

    • 可能不太清楚titleText意味着我们将使用它而不是终端的标题,但理想情况下,设置 UI 会更好地解释这一点,而实际的键并不那么重要。

默认情况下,配置文件名称不能用于选项卡标题,但可能是显示路径的选项?
该路径通常在 pompt 中,因此不确定两者都需要它。

Profile 只显示 CMD 或 PowerShell .. 但我提议的是能够使用友好名称重命名 Tab。

重命名选项卡意味着名称在该选项卡关闭之前一直存在。 我的建议是允许配置文件具有用户选择的名称

不过,我想我将其保持打开状态以跟踪专门向选项卡右键单击菜单添加按钮以设置配置文件的 TitleText。



呃,既然我已经输入了这个,也许我们应该有一个我们修改的运行时文本。 我在考虑用户打开多个选项卡并打开相同配置文件的情况。 如果用户想要重命名其中一个选项卡,他们可能不希望将该名称全局应用于具有该配置文件的每个选项卡。 他们可能只想重命名 _one_ 选项卡。

因此,这应该涉及在选项卡上设置一个标志,表明它使用的是运行时标题而不是来自控件的标题,我们应该忽略来自控件的所有标题更改。 如果配置文件的标题设置被更改,那么我们也会忽略它。

尽管这里的一个问题是该自定义字符串应该应用于 Tab 还是聚焦的 Pane? 我可能认为它适用于选项卡,而不是窗格。

@zadjii-msft 它应该适用于选项卡。 此外,如果它是明文,它应该将运行时标志设置为 false。 这也将使选项卡开始使用配置文件名称。

@carlos-zamora 想处理选项卡操作,我认为这非常合适。 他甚至提出了! 所以这就是交易:关于标题显然有三种不同的思想流派,所以现在是Spec Needed 。 :微笑:

@carlos-zamora 想处理选项卡操作,我认为这非常合适。 他甚至提出了! 所以这就是交易:关于标题显然有三种不同的思想流派,所以现在是Spec Needed 。 😄

是的! 我真的很想要这个功能。 这绝对是一个如何与外壳/发行版交互的问题,将标题发送到选项卡(#608)。 我还注意到悬停动作应该包含在这个范围内(即:悬停在选项卡上会显示鼠标下方的完整路径 [try on Edge])。 @cinnamon-msft 我很快就会起草一份规范。 我们超级兴奋!

高级让我知道作为开发人员我可以如何做出贡献。

请注意,您还可以在 cmd 中使用title "new title"和 powershell 中的$Host.UI.RawUI.WindowTitle = "new title"从命令行设置标题

我们应该使用 #608 来跟踪标签标题问题。 谢谢!

请注意,您还可以在 cmd 中使用title "new title"和 powershell 中的$Host.UI.RawUI.WindowTitle = "new title"从命令行设置标题

很有帮助! 我在 Powershell 配置文件中添加了一个函数,以便更轻松地进行设置:

function Set-Title {
    param(
        [string]
        $title
    )
    $Host.UI.RawUI.WindowTitle = $title   
}

请注意,您还可以在 cmd 中使用title "new title"和 powershell 中的$Host.UI.RawUI.WindowTitle = "new title"从命令行设置标题

运行 npm 任务时,例如npm run serve ,标题将变为npm

为打开的选项卡设置名称的简单方法将大大有助于使其更有用。 打开多个 PowerShell 选项卡后,我发现很难知道我正在尝试使用哪个选项卡。

@greggbjensen只需使用函数或别名,如上面 tvsbrent 的评论

@phuclv90右键单击以快速设置名称仍然会更快更简单。 如果你打算有很多标签,它似乎是必要的。 设置选项卡颜色的能力也是一个很好的补充。

能够通过双击选项卡并在某种文本框中设置新标题来重命名选项卡真是太好了。 此名称替换原始标题并保持直到选项卡关闭或再次重命名。

最初由 @Vasiliy-Bondarenko 发表于 #3387

请允许在 UI 中轻松使用友好名称重命名选项卡,这是我经常与 ConEmu 一起使用的一项功能,也是我尚未切换到 Windows 终端的一个原因,因为当您有很多“好”时,这还不够实用已知”选项卡已打开,但无法在 Windows 终端中轻松解决此问题

刚刚发现我至少可以通过添加到.bashrc的函数来解决 WSL 中的标题,该函数可以从提示中调用,例如title "my title"

title() {
    PS1="\[\e]0;${debian_chroot:+($debian_chroot)}$1\a\]\[\033[01;34m\]\w\[\033[00m\]> "
}

这实际上不是_workaround_,这是设置几乎所有终端窗口标题的最佳、最灵活和最可靠的方法。 它可以是动态的,可以通过 SSH 运行,并且可以合并仅在远程主机上可用的内容。

我修改了@xoofx发布的解决方案,不修改终端本身的提示:

title() {
    PS1="\[\e]0;$* \a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ "
}

它看起来有点难看,但如果你把它放在你的~/.bashrc ,你就可以调用title <title_text>并且它会设置选项卡/窗口标题,但它不会弄乱默认提示。

在 Mac 上的 iTerm 中,我可以做到这一点,而且非常有用。 我还可以设置标签颜色,这非常好。

我几乎只在 Windows 终端中使用 Ubuntu WSL,并且我的所有选项卡都显示“ myname@mycomputer/c/g ”,其中“g”是我所有项目所在的根目录的第一个字母。 对我来说完全没用。 毫无疑问,有一些方法可以改变它,但用户友好的方式会很好。

:))) 我正在使用 WSL。 我想重命名选项卡“我的监视器”,我使用了:“我的监视器;源 run.sh”

@quanticle上面的策略非常适合本地终端,但是一旦您通过 ssh 连接到不同的服务器,它就会重置 PS1 并且您将失去您的头衔。 所以能够设置一个持久标签真的很好。

@quanticle上面的策略非常适合本地终端,但是一旦您通过 ssh 连接到不同的服务器,它就会重置 PS1 并且您将失去您的头衔。 所以能够设置一个持久标签真的很好。

公平地说, @quanticle的解决方案是_甚至更好(!)_,如果您也将其设置在远程服务器上! 这样,窗口的标题可以反映_您当前正在访问哪个服务器_,并且外壳可以放入与远程会话密切相关的任何动态信息。 这是本地选项卡标题覆盖将_永远_无法完成的事情,即使它已完美实现。

@DHowett-MSFT 如果您希望标题反映“您在哪个服务器上”,那将是正确的,但如果您希望标题反映“任务”之类的内容,则不一定。 因此,我可能使用相同的几台服务器,但用于不同的任务,并且希望将这些任务保留在不同的终端选项卡中……并且我希望名称在我在这些选项卡中的服务器之间来回切换时保持不变……

现在,这是我不能在 Windows 上选择 wt 作为主要终端工具的最后也是唯一的原因。
:(

这就是为什么 Windows Terminal 对我也没有用的原因,我最终得到了很多名为 node 的选项卡,并且无法更改它们(即使在尝试通过 json 进行更改,并使用title和其他解决方案之后)。

我最终得到了很多名为 node 的选项卡,

好的,现在这是_需要_这个场景的一个很好的例子,只是设置 shell 无法修复的标题形式。 感谢您的反馈!

这可以帮助:

set PROMPT=$e]0;$p$e$p$g

https://github.com/microsoft/terminal/issues/2304#issuecomment -528319270

对我来说,这项任务与 cmder/etc 相同。 我经常在bin文件夹或类似文件夹中打开多个项目,因此能够应用自定义标签会很有帮助。

另一个用例是通过 SSH 进行交互以从 linux 环境变量中获取名称,并将其与目录路径的最后一部分(例如选项卡名称)组合在一起:
$PROJECTROOT $CONFIG src/path/to/dir
(然后修剪路径的开头,知道我的目录在 /user/username 下的某处比知道路径的结尾有用)

这也应该可以从命令行配置。

所以当我们在做类似的事情时:

wt.exe -p "profile1"

我们应该能够添加一个参数来指定选项卡的名称,例如:

wt.exe - “profile1” -name “标签 1 的名称”

这当然也适用于命令行上的每个“新标签”。

谢谢你。

@mfeemster感谢您的建议! 我已将其添加到我们在 #4632 中跟踪命令行参数的大型工作列表中:

  • [ ] 添加对-t,--title title以设置新终端会​​话的开始标题(添加到terminal_parameters

顺便说一句,如果添加此功能,还应考虑窗口选项卡的宽度。
固定宽度,因为 16-char 浪费了太多空间用于短名称,也隐藏了长名称的重要信息。

我建议 :

  • 标签宽度应该是 4-char 到 24-char,根据标签名称自动调整。
  • 并删除头部/尾部空格。
  • 如果没有设置图标,也删除空格。
  • 添加配置选项以禁用关闭按钮 "X" 。 仅支持右键菜单关闭。

putty-tab
为真实信息节省更多空间。 😃

@fanlix您会很高兴知道您的请求在很大程度上已经被

  • #597 - 除了equalsizeToContent之外的更多选项卡大小选项
  • #3327 - 主题选项,包括删除“X”

请注意,您还可以在 cmd 中使用title "new title"和 powershell 中的$Host.UI.RawUI.WindowTitle = "new title"从命令行设置标题

这只是为了重命名控制台。
但是这个原始请求的目的是重命名控制台内的选项卡
请记住这一点 :)

这只是为了重命名控制台。
但是这个原始请求的目的是重命名控制台内的选项卡
请记住这一点 :)

您应该知道更改“控制台”的标题,当控制台托管在选项卡中时,_更改选项卡的标题_。 :微笑:

您应该知道更改“控制台”的标题,当控制台托管在选项卡中时,_更改选项卡的标题_。 😄

你是对的。 :-)
我没有注意到这是如何实现的,因为它还重命名了控制台的名称......

实际上,您当前关注的选项卡名称将成为任务栏中控制台的标题。
因此,如果您同时使用多个控制台(专用于具有不同远程选项卡列表的多个任务),则控制台的名称不稳定,您必须再次搜索:“我的选项卡在哪个控制台中?”

在 ISE 中,这是分开的。
您可以在任务栏中输入控制台名称:

$Host.UI.RawUI.WindowTitle = "new title"

对于控制台内的选项卡名称,您有:

$psISE.CurrentPowerShellTab.DisplayName = "tab title"

$Host.UI.RawUI.WindowTitle = "new title"一个问题是,如果我运行npm run dev ,选项卡标题将更改为npm

Cmder做得很好。

对于我使用标签名称的生产力跟踪器来说,这是一个完美的主意。 在运行时自动化它会很棒。 我的工作:
(每次我清除控制台时我都会得到更新 😝

## UI
    $pIcon = "💥"
    $tIcon = "😍"
      function trloc ($pth){
        $pwd -replace [regex]::Escape($HomeDir), $pth
      }

  # Comand line
    function prompt {
      (trloc($pIcon)) + "💁‍"
    }

  # Tab - Window - Title - Name as actual path (Shorted because I'am using ManicTime to track my productivity)
    function tabName { $Host.UI.RawUI.WindowTitle = trloc($tIcon) }
    function c { tabName; Clear-Host }

对于我使用标签名称的生产力跟踪器来说,这是一个完美的主意。 在运行时自动化它会很棒。 我的工作:
(每次我清除控制台时我都会得到更新 😝

## UI
    $pIcon = "💥"
    $tIcon = "😍"
      function trloc ($pth){
        $pwd -replace [regex]::Escape($HomeDir), $pth
      }

  # Comand line
    function prompt {
      (trloc($pIcon)) + "💁‍"
    }

  # Tab - Window - Title - Name as actual path (Shorted because I'am using ManicTime to track my productivity)
    function tabName { $Host.UI.RawUI.WindowTitle = trloc($tIcon) }
    function c { tabName; Clear-Host }

你好。 请问你用的是哪个追踪器?

你好。 请问你用的是哪个追踪器?

狂躁时间
现在在 linux 上是 ActivityWatcher,它也很好,我希望它会增长得更快:)

只有当你在运行时,powershell 才会有帮助。 使用 openssh 运行 ssh 终端时,重命名选项卡以了解我在哪个主机上会很好。 它会选择您访问的第一个主机,然后就是它显示的内容,但是如果您更改服务器,它就不会更新。 我会喜欢一个 r-click 重命名选项,甚至一些我可以设置的环境变量会被选中。

我的意思是,这只是您可以在这些服务器上配置的内容。 :)

当我们谈论超过 1000 台服务器时,您会这么说。 我正在通过 xshell 尝试这个,我有一个我从中跳转的堡垒主机,并寻找一种简单的方法来跟踪服务器名称。 使用 xshell,这是通过脚本完成的,我用来在内部设置它。

我在玩printf \033]0;并且似乎在做我需要的事情。

: tada: #5775 中已解决Windows Terminal Preview v1.1.1671.0 .:tada:

方便的链接:

哇.. 祝贺团队 :D 抱歉,我参与的线程不多.. 但我正在密切关注它。 它让我对 Microsoft 如何规划功能有了深刻的了解。我一直信任 Microsoft。如何将它变成一个很棒的功能是这个线程真正教的。

是的,祝贺球队。

我还想念一件事,能够双击选项卡重命名它,是否计划使用该功能?

需要能够为选项卡重命名设置键绑定(默认情况下 F2 有意义吗?)

@Inrego您只需右键单击选项卡即可重命名。 KB 快捷方式让我印象深刻,因为它是您经常执行的操作所必需的,因此您不想使用鼠标。 但是,您在工作时真正重命名选项卡的频率如何? 我觉得右键菜单就够了。 只有我的 2 美分。

@mfeemster控制台应用程序让我觉得不需要鼠标来操作。

除此之外,我想在登录服务器时在我的密码管理器中自动命名选项卡。
现在,我已经通过使用命令面板打开一个具有所需名称的新选项卡来解决这个问题。 但这并不理想。

有打开新标签页的 KB 快捷方式。 我认为重命名选项卡可能是比打开选项卡更频繁执行的操作。 或者还有一个 KB 快捷方式来关闭所有选项卡。 也是很少执行的动作。 仅仅因为您很少重命名选项卡,并不意味着您可以假设它对每个人来说都是罕见的操作。 我想说的是,这不应该成为实施或不实施的真正原因,因为这是非常主观的,而且因人而异。

需要能够为选项卡重命名设置键绑定(默认情况下 F2 有意义吗?)

您可以使用renameTab的键绑定来执行此操作,但现在您只能硬编码标题。 有一个开放的 PR (#7462) 添加openTabRenamer 。 我们需要回到那个公开的 PR。

这正是我需要的,谢谢。 我会关注那个公关

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

相关问题

ghvanderweg picture ghvanderweg  ·  3评论

NickITGuy picture NickITGuy  ·  3评论

zadjii-msft picture zadjii-msft  ·  3评论

mdtauk picture mdtauk  ·  3评论

waf picture waf  ·  3评论