Skip to content

Latest commit

 

History

History
282 lines (171 loc) · 21.5 KB

File metadata and controls

282 lines (171 loc) · 21.5 KB

六、从 Windows 终端获取更多

介绍了新的 Windows 终端在第三章,开始与 Windows 终端,您看到了如何安装和定制您的概要文件和配色方案的顺序,他们在这一章中使用。 在本章中,我们将进一步探索 Windows 终端,并研究在 Windows 终端中运行多个不同 shell 的情况下保持生产效率的几种不同方法。 在此之后,我们将查看添加自定义配置文件,以使您能够简化常见任务的流程。

在本章中,我们将涵盖以下主要主题:

  • 自定义选项卡标题
  • 使用多个窗格
  • 添加自定义配置文件

我们将通过研究如何使用选项卡标题来帮助您管理多个选项卡开始本章。

定制标签标题

标签式用户界面很棒 浏览器有,编辑器有,Windows 终端有。 对于一些人,包括我自己,标签式用户界面也提出了一个挑战-我最终打开了很多标签:

Figure 6.1 – A screenshot of Windows Terminal with lots of tabs open

图 6.1 - Windows 终端的屏幕截图,其中有许多选项卡打开

正如前面的截图所显示的,当多个选项卡打开时,很难分辨每个选项卡在运行什么,以及您使用它的目的是什么。 在编码时,我经常打开一个选项卡,用于执行 Git 操作,另一个选项卡用于构建和运行代码,另一个选项卡用于在运行时与代码交互。 在这些标签中添加一个用于一般系统交互的额外标签,以及一个或两个用于查看某人询问的关于另一个项目的问题的标签,这个数字会迅速增长。

前面的屏幕截图显示,根据在一个选项卡中运行的 shell,您可能会得到一些路径信息,但如果在同一路径中有多个选项卡,即使这也没有多大帮助,因为它们都显示相同的值。 幸运的是,在 Windows Terminal 中,您可以设置选项卡标题来帮助您跟踪。 我们将介绍几种不同的方法,这样您就可以选择最适合自己的方法。

从上下文菜单中设置标签标题

设置标题的简单方法是右键单击选项卡标题,弹出上下文菜单,选择重命名选项卡:

Figure 6.2 – A screenshot of the tab context menu showing Rename Tab

图 6.2 -显示 Rename tab 的选项卡上下文菜单的屏幕截图

如上截图所示,右键单击一个选项卡会弹出一个上下文菜单,允许你重命名一个选项卡或设置选项卡颜色,以帮助组织你的选项卡:

Figure 6.3 – A screenshot of Windows Terminal with renamed and color-coded tabs

图 6.3 - Windows 终端的屏幕截图,带有重命名和彩色编码的选项卡

这个截图显示了按对标签标题颜色的使用进行分组的标签标题集。 每个选项卡也有一个描述性的标题,例如,git表示该选项卡的用途。 当然,您可以选择适合您的工作流的标题。

当您在终端中工作时,您可能更希望能够使用键盘来设置标题,因此我们将在下面的内容中查看。

在 shell 中使用函数设置标签标题

如果您喜欢将双手放在键盘上,可以从运行在选项卡中的的 shell 中设置选项卡标题。 执行此操作的方法取决于所使用的 shell,因此我们将在这里查看几个不同的 shell。 让我们从Bash开始。

为了方便设置提示符,我们可以创建以下函数:

function set-prompt() { echo -ne '\033]0;' $@ '\a'; }

从这段代码中可以看到,这创建了一个名为set-prompt的函数。 该函数使用转义序列来控制终端标题,允许我们运行诸如set-prompt "A new title"这样的命令来更改制表符标题,在本例中,将其更改为A new title

对于 PowerShell,我们可以创建一个类似的函数:

function Set-Prompt {
    param (
        # Specifies a path to one or more locations.
        [Parameter(Mandatory=$true,
                   ValueFromPipeline=$true)]
        [ValidateNotNull()]
        [string]
        $PromptText
    )
    $Host.UI.RawUI.WindowTitle = $PromptText
}

此代码片段显示了一个Set-Prompt函数,该函数访问 PowerShell$Host对象来控制标题,允许我们运行Set-Prompt "A new title"等命令,以类似于 Bash 中的方式更改选项卡标题。

对于 Windows 命令提示符(cmd.exe),我们可以运行TITLE A new title来控制标签标题。

提示

一些实用程序和 shell 配置覆盖默认提示设置,以控制除了提示之外的 shell 标题。 在这些情况下,这个部分的函数不会有任何明显的效果,因为提示将立即覆盖指定的标题。 如果在使用函数时遇到问题,请检查提示配置。

对于 Bash,运行 echo$PROMPT_COMMAND检查提示配置。 对于 PowerShell,运行Get-Content function:prompt

我们刚才看到的函数的使用示例如下:

Figure 6.4 – A screenshot showing the use of the set-prompt function

图 6.4 -显示设置提示功能使用情况的屏幕截图

在这个截图中,您可以看到 Bash 中使用了set-prompt函数来控制选项卡标题。 其他选项卡(PowerShell 和 Command Prompt)的标题也可以使用本节中所示的函数进行设置。

当您在终端中工作时,使用这些函数可以方便地更新选项卡标题,而不会中断访问鼠标的流程。 您还可以使用这些函数将标题作为脚本的一部分来更新,例如,通过选项卡标题提供一种一目了然的方式来查看长时间运行的脚本的状态,即使不同的选项卡具有焦点。

最后一种更新选项卡标题的方法是在启动 Windows Terminal 时通过命令行。

从命令行设置标签标题

前面的小节介绍了在 Windows 终端上运行 shell 的中设置选项卡标题; 在本节中,我们将启动 Windows Terminal 并传递命令行参数来指定要加载的配置文件和设置选项卡标题。

使用wt.exe命令可以从命令行或运行对话框(Windows+R)启动 Windows 终端。 单独运行wt.exe将启动 Windows Terminal,并加载默认配置文件。 可以使用--title开关控制选项卡标题,例如wt.exe --title "Put a title here"。 此外,--profile(或-p)开关允许我们指定应该加载哪个概要文件,这样wt.exe -p Ubuntu-20.04 --title "This is Ubuntu"将加载Ubuntu-20.04概要文件并设置选项卡标题。

控制选项卡标题的动机之一是在使用多个选项卡时进行跟踪。 Windows Terminal 有一组强大的命令行参数(我们将在下一节中看到更多这些参数),它们允许我们使用一个或多个特定的选项卡/配置文件启动 Terminal。 我们可以在前面的命令的基础上添加; new-tab(注意分号)来指定要加载的新选项卡,包括任何额外的参数,如titleprofile:

wt.exe -p "PowerShell" --title "This one is PowerShell"; new-tab -p "Ubuntu-20.04" --title "WSL here!"

在本例中,我们将指定第一个选项卡为PowerShell概要文件和一个标题为This one is PowerShell,并指定第二个选项卡为Ubuntu-20.04概要文件及其标题为WSL here!

请注意

参数new-tab之前需要一个分号,但是许多 shell(包括 Bash 和 PowerShell)将分号作为命令分隔符。 要成功地使用前面的命令,任何分号都需要在 PowerShell 中使用反标记进行转义(``;`)。

第五章,Linux, Windows 互操作性,在*【显示】从 Linux 调用 Windows 应用部分,我们可以从 WSL 启动 Windows 应用。 通常,我们可以直接执行 Windows 应用,但由于 Windows Terminal 使用了一个名为执行别名的特性,我们需要通过cmd.exe来启动它。*

此外,由于wt.exe的工作方式,当从 Bash 启动时,它需要使用cmd.exe运行:

cmd.exe /C wt.exe -p "PowerShell" --title "This one is PowerShell"\; new-tab -p "Ubuntu-20.04" --title "WSL here!"

这个例子展示了使用cmd.exe启动带有多个选项卡的 Windows Terminal(注意反斜杠来转义分号),设置配置文件和标题。

Windows Terminal 中的new-tab命令可以重复多次,通过这种方式,您可以创建命令或脚本以可重复的方式设置复杂的 Windows Terminal 选项卡安排。

本节中的技术为您提供了在 Windows Terminal 会话中设置选项卡标题的多种方法,以帮助您在使用在不同选项卡中打开的多个 shell 时保持组织。 在下一节中,我们将研究 Windows Terminal 用于处理多个 shell 的另一个特性。

使用多个窗格

在上一节中,我们看到了在同时打开多个 shell 时使用选项卡,但有时希望能够同时看到多个 shell。 在这一节中,我们将看看如何在 Windows Terminal 中使用多个窗格来实现如下内容:

Figure 6.5 – A screenshot showing multiple panes in Windows Terminal

图 6.5 -视窗终端显示多个窗格的截屏

前面的屏幕截图显示了运行多个配置文件在同一个选项卡窗格:左边是 PowerShell 窗口,使得 web 请求,右上的窗格是运行一个 web 服务器,右下方的窗格中有htop在 WSL 运行跟踪运行 Linux 进程。

提示

如果您熟悉tmux实用程序(https://github.com/tmux/tmux/wiki),那么这看起来可能很熟悉,因为tmux也允许将窗口拆分为多个面板。 但也有一些不同。 tmux的一个特征是允许您从终端断开和重新连接的会话,可以方便的在处理ssh,保存您的会话如果你**SSH【显示】(**Secure Shell)连接下降,而 Windows 终端不做(还)。 另一方面,使用 Windows Terminal 中的窗格,您可以在每个窗格中运行不同的配置文件,而tmux不能这样做。

在前面的屏幕截图中,您可以看到 PowerShell 和 Bash(在 WSL 中)在同一个选项卡的不同窗格中运行。 了解tmux和 Windows Terminal 的功能,并为该任务选择合适的工具是很有好处的——您总是可以在 Windows Terminal 的 Bash shell 中运行 tmux,对这两种情况都有好处!

现在您已经了解了窗格,让我们看看如何设置它们。

交互式创建窗格

创建窗格的最简单方法是根据需要以交互方式创建它们。 有一些默认的快捷键,可以让你开始,但是如果你有特殊要求,你可以配置自己的键绑定描述:https://docs.microsoft.com/en-us/windows/terminal/customize-settings/key-bindings pane-management-commands

第一个命令是Alt+【T3 转变】+-,这将把当前面板一半水平,Alt +【显示】转变++,这将把面板垂直。 这两个命令都将在新创建的窗格中启动默认配置文件的一个新实例。

默认配置文件可能不是您想要运行的配置文件,但常见的情况是在您已经运行的配置文件中需要另一个终端。 按Alt+Shift+D将从当前窗格中创建一个配置文件的新实例。 该命令将根据可用空间自动决定是水平分割还是垂直分割。

如果你想在一个新的窗格中选择打开哪个配置文件,你可以打开启动配置文件下拉框:

Figure 6.6 – A screenshot showing the launch profile dropdown

图 6.6 -显示启动配置文件下拉框的截图

这个截图显示了标准的下拉框,用于选择要运行的配置文件。 与正常单击不同,在单击时按住Alt键将在新的窗格中启动所选配置文件。 与Alt+Shift+D一样,Windows 终端将决定当前窗格是水平拆分还是垂直拆分。

另一个选项是使用 Windows 终端命令面板,使用Ctrl+Shift+P:

Figure 6.7 – A screenshot showing the split options in the command palette

图 6.7 -在命令面板中显示拆分选项的屏幕截图

命令面板允许您输入命令来筛选命令列表,这个屏幕截图显示了匹配split的命令。 底部的两个命令匹配我们已经看到的两个命令,以及它们对应的快捷键。 top 命令在命令面板中提供了一个菜单系统,该菜单系统允许您选择要用于新的窗格的配置文件,然后选择如何分割现有的窗格。

现在我们已经了解了如何创建窗格,让我们看看如何使用它们。

管理窗格

在窗格之间切换焦点的最明显的方法是在窗格中单击鼠标——这样做可以更改聚焦的窗格(在窗格边框上用突出显示的颜色表示)。 要使用键盘更改窗格,您可以使用Alt+一个光标键,即Alt+向上的光标将焦点移动到当前窗格上方的一个窗格。

为了改变窗格的大小,我们使用类似的组合键:Alt+Shift+光标键。 Alt+【T7 转变】+【显示】光标和*【病人】Alt + Shift+光标下组合调整当前面板的高度, 和【t16.1】Alt ++光标左移Alt+*【T25 转变】+光标右组合调整当前面板的宽度。**

如果在窗格中运行的任何 shell 退出,则该窗格将关闭,其他窗格将调整大小以填充其空间。 还可以关闭当前面板按**Ctrl + Shift+W(这个快捷方式介绍了第三章【显示】,开始与 Windows 终端,在【病人】使用 Windows 终端部分,作为快捷键关闭选项卡,但在这一点上, 一个标签中只有一个窗格!)*

*最后,让我们看看在从命令行启动 Windows Terminal 时如何配置窗格。

从命令行创建窗格

在本章节的前面,我们看到了如何使用 Windows Terminal 命令行(wt.exe)来启动带有多个选项卡的 Windows Terminal。 在本节中,我们将看到如何对窗格进行同样的操作。 当您正在处理一个项目,并且拥有一组您通常可以设置的窗格时,这是很有用的,因为您可以编写脚本,使其易于启动一致的布局。

当使用多个选项卡启动时,我们对wt.exe使用new-tab命令。 使用多个窗格启动的方法与此类似,但使用了split-pane命令(注意,分号的转义规则仍然适用于命令行部分的设置选项卡标题)。

下面是使用split-pane的例子:

wt.exe -p PowerShell; split-pane -p Ubuntu-20.04 -V --title "web server"; split-pane -H -p Ubuntu-20.04 --title htop bash -c htop

如您所见,在本例中,split-pane用于指定一个新的窗格,我们可以使用-p开关来指定该窗格应该使用哪个概要文件。 我们可以让 Windows 终端选择如何进行拆分,也可以使用-H进行水平拆分,或者-V进行垂直拆分。 您可能还注意到已指定了--title。 Windows Terminal 允许每个窗格有一个标题,并将当前聚焦的窗格的标题显示为选项卡标题。 最后,您可能会注意到最后一个窗格有额外的参数bash -c htop。 这些参数被视为要在启动的概要文件中执行的命令。 这个命令的最终结果非常类似于图 6.5 中所示的屏幕截图。

另外,Windows Terminal 中的命令面板也允许我们使用命令行选项。 按Ctrl+Shift+P打开命令面板,然后键入>(右尖括号):

Figure 6.8 – A screenshot showing the command palette with command-line options

图 6.8 -显示带有命令行选项的命令面板的屏幕截图

正如您在这个截图中看到的,我们可以使用split-pane命令来使用命令行选项分割现有的窗格。

到目前为止,在本章中,我们已经介绍了使用选项卡和窗格来帮助管理多个配置文件的方法。 在本章的最后一节中,我们将看看一些您可能想要创建的配置文件的其他想法。

添加自定义配置文件

Windows Terminal 在自动发现 PowerShell 安装和 WSL 发行版以填充您的概要文件列表(并在安装新发行版时更新它)方面做得很好。 这是一个很好的开始,但是除了启动一个交互式 shell 之外,概要文件还可以启动一个概要文件中的特定应用(如上一节中的htop所示)。 在本节中,我们将看几个示例,但它们的主要目的是展示除了启动 shell 之外的思想,为如何自定义 Windows Terminal 配置提供灵感。

如果您有一台定期通过 SSH 连接的机器,那么您可以通过创建一个直接启动到 SSH 的 Windows Terminal 配置文件来简化工作流。 从配置文件下拉菜单中打开你的设置(或者按下Ctrl+),在profiles下的list部分添加一个配置文件:

{
    "guid": "{9b0583cb-f2ef-4c16-bcb5-9111cdd626f3}",
    "hidden": false,
    "name": "slsshtest",
    "commandline": "wsl bash -c \"ssh [email protected]\"",
    "colorScheme": "Ubuntu-sl",
    "background": "#801720",
    "fontFace": "Cascadia Mono PL"
},

介绍了 Windows 终端设置文件第三章【病人】,开始与 Windows 终端,和在这个例子中,您可以看到熟悉的属性等这一章namecolorSchemecommandline属性是我们配置应该运行的内容的地方,我们使用它来启动wsl命令,使用运行ssh命令行运行bash。 您应该确保guid的值与您设置中的其他配置文件不同。 这个例子展示了如何创建一个概要文件来在 WSL 中执行命令——对于 SSH,您还可以选择在commandline属性中直接使用ssh,因为 Windows 中现在包含了一个 SSH 客户机。

启动这个新配置文件将自动启动ssh并连接到指定的远程机器。 另外,可以使用background属性设置背景颜色,以指示您所连接的环境,例如,便于区分开发环境和测试环境。

如果你用 SSH 连接了很多机器,那么你可以启动一个脚本来选择要连接的机器:

#!/bin/bash
# This is an example script showing how to set up a prompt for connecting to a remote machine over SSH
PS3="Select the SSH remote to connect to: "
# TODO Put your SSH remotes here (with username if required)
vals=(
    [email protected]
    [email protected]
)
IFS="\n"
select option in "${vals[@]}"
do
if [[ $option == "" ]]; then
    echo "unrecognised option"
    exit 1
fi
echo "Connecting to $option..."
ssh $option
break
done

该脚本包含一个选项列表(vals),这些选项在脚本执行时将呈现给用户。 当用户选择一个选项时,脚本运行ssh以连接到该机器。

如果你把这个脚本保存为ssh-launcher.sh在你的主文件夹中,你可以在你的 Windows 终端设置中添加一个配置文件来执行它:

{
    "guid": "{0b669d9f-7001-4387-9a91-b8b3abb4s7de8}",
    "hidden": false,
    "name": "ssh picker",
    "commandline": "wsl bash $HOME/ssh-launcher.sh,
    "colorScheme": "Ubuntu-sl",
    "fontFace": "Cascadia Mono PL"
},

在前面的配置文件中,您可以看到,commandline已经被运行前面ssh-launcher.sh脚本的脚本所取代。 当这个配置文件被启动时,它使用wsl通过bash来启动脚本:

Figure 6.9 – A screenshot showing the ssh launcher script running

图 6.9 -显示 ssh 启动器脚本运行的截图

你可以在前面的截图中看到这个脚本。 该脚本提示用户从计算机列表中进行选择,然后运行ssh连接到所选的计算机。 这样就可以方便地建立到常用机器的连接。

当您使用 WSL 时,您可能会发现一组您经常运行的应用或您经常执行的步骤,这些都是添加到您的 Windows Terminal 概要文件的很好的候选对象!

请注意

还有很多其他的选项,我们在这里没有机会看到,例如,为您的配置文件设置背景图像,您可以在 Windows 终端文档https://docs.microsoft.com/en-us/windows/terminal/找到这些细节。 Windows 终端也在快速地添加新特性——要了解新特性,可以在 GitHub 上的https://github.com/microsoft/terminal/blob/master/doc/terminal-v2-roadmap.md查看路线图文档。

总结

在本章中,您已经看到了使用多个 Windows 终端配置文件的方法。 首先,您了解了如何通过控制选项卡标题(和颜色)来处理多个选项卡,以帮助跟踪每个选项卡的上下文。 然后您看到了如何使用窗格来允许多个(可能不同的)概要文件在同一个选项卡中运行。 您可能会发现您更喜欢一种工作方式而不是另一种,或者您将选项卡和配置文件组合在一起。 不管怎样,您还学习了如何使用 Windows Terminal 命令行为两个选项卡和窗格的创建编写脚本,以便轻松快速地为项目创建一致的、高效的工作环境。

本章的最后,通过设置一个配置文件来启动 SSH 连接到远程机器,来了解 Windows Terminal 配置文件如何不仅仅用于运行 shell。 然后您看到了如何更进一步,并提示您使用Bash脚本从要连接的机器列表中选择。 如果您定期通过 SSH 连接到计算机,那么这些示例可能会有用,但目的是展示如何进一步利用 Windows Terminal 中的配置文件。 当您发现工作流中常见的任务和应用时,考虑一下是否值得花几分钟创建一个 Windows Terminal 配置文件,以使这些重复的任务更快更容易。 所有这些技术允许您改进您的工作流程与 Windows 终端和提高您的日常工作效率。

在下一章中,我们将研究一个新主题:如何在 wsdl 中使用容器。**