使用ZSH美化Windows系统Git Bash

此前,我们讲解了一种借助 Windows Subsystem for Linux(WSL)让用户在 Windows 操作系统中运用 Linux Shell 命令,进而高效地实现文件访问、编译等开发工作。

Windows系统命令行的最佳实践 | 听到微笑的博客

这种借助 Windows Subsystem for Linux(WSL)的方式,其显著优势在于提供了完整的 Linux 子系统环境,这意味着在常规 Linux 系统中所使用的各类命令,在 WSL 中均可无障碍执行,极大地拓展了 Windows 用户对于 Linux 工具和命令的使用场景。

然而,WSL 是在 Windows 内核之上搭建的轻量级 Linux 兼容层,从某种程度上可以类比为一个能够访问宿主文件的虚拟机。这种架构也引发了一些性能问题。在文件访问性能上,WSL 子系统对 Windows 宿主文件的访问效率偏低,这在处理大量文件的编译打包场景可能会产生明显的延迟。

此外,在环境配置的兼容性上也存在局限。例如,当在 Windows 宿主系统中安装并配置好 Java JDK 后,WSL 子系统并不能直接调用宿主机环境的 java 可执行程序。若要在 WSL 中使用 JDK,仍然需要在 WSL 内部另行安装对应 Linux 版本的 JDK,这无疑增加了大家配置环境的成本。

在 Windows 环境下,Windows Git 自带的 Git Bash 发挥着重要作用。它并非 Linux 虚拟机,而是模拟类 Unix 环境的命令行工具,为 Windows 用户提供了类似 Linux 的命令行操作体验,有效避免了像 WSL 那样存在的文件访问性能不佳以及环境配置兼容性问题。但遗憾的是,Git Bash 的默认客户端界面不太美观。作为一个注重使用体验的开发者,我一直想对 Git Bash 进行美化,使其能达到类似 Mac ZSH 的视觉效果。

在我一通折腾下,Windows Git Bash 重新焕发新春:

配置完后的 Git Bash,拥有类似 Mac 终端的体验:

  • 类Unix命令行

  • 显示当前文件夹所在的Git分支

  • 命令提示

现在我们来介绍一下整体的安装配置步骤:

一. 安装配置步骤

第一步:安装Git

Git - Downloading Package

安装时请记住 Git 的安装目录:

并且安装时请勾选 Git Bash 选项:

后面一直下一步,直至安装成功即可,默认情况下Git Bash的终端是这样的:

第二步:下载并配置ZSH

通过下面的链接下载 Zsh for Windows package 软件包。

下载地址:zsh-5.9-2-x86_64

下载完成后得到以下文件:

解压该文件,可以得到比较关键的 etcusr 目录,里面包含 zsh 可执行文件:

我们需要 etcusr 目录,因此将这两个目录从解压的文件夹复制到 Git 安装目录中,出现提示时,选择覆盖所有现有文件的选项,不用担心,这两个目录(etcusr)包含全新文件,不会覆盖现有文件。以我们前面的安装教程为例,需要将这两个目录文件复制到 D:\work-sorftware\Git 下。

使用文本编辑工具打开 {GIT_DIR}/Git/etc/profile 文件,{GIT_DIR}代表Git安装目录。注释掉文件底部附近以 line 开头的整个块 if [ ! "x${BASH_VERSION}" = "x" ]; then 并以fi行结束。在撰写本文时,我注释掉了111-133行。我们不需要所有这些代码,因为我们知道我们将使用 ZSH。并在注释掉的块下方,添加以下 3 行:

HOSTNAME="$(exec /usr/bin/hostname)"
profile_d zsh
SHELL='/usr/bin/zsh'

第三步:下载并配置 Windows Terminal

前往微软官方商店下载 Windows Terminal:

打开Windows Terminal,新增配置文件,在命令行中填写 zsh 启动命令:

{GIT_DIR}\usr\bin\zsh.exe -il

上面的配置文件使用自定义图标,因此您可以参考下面的默认git-for-windows.ico图标文件 D:\work-sorftware\Git\mingw64\share\git 或者再找一个你喜欢的。

也可以在启动配置中将 Git Bash 设置为默认 Windows 终端配置文件。

第四步:安装 oh-my-zsh

从任意位置执行以下命令,将Oh My Zsh安装在$HOME/.oh-my-zsh目录下:

wget https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh
sh install.sh

使用以下命令克隆zsh-autosuggestions

git clone https://github.com/zsh-users/zsh-autosuggestions.git $ZSH_CUSTOM/plugins/zsh-autosuggestions

打开~/.zshrc文件,将zsh-autosuggestions插件添加到oh-my-zsh插件:

执行下列命令重新加载配置文件:

source ~/.zshrc

我们就可以看到 zsh-autosuggestions 生效了:

二. IDEA使用 Git Bash

按照上述步骤配置好 Git Bash 后,我们可以在诸如IDEA等开发工具中配置使用ZSH:

这样IDEA命令行,也就可以使用ZSH了:

二. 总结

本文介绍了在 Windows 系统中使用 ZSH 美化 Git Bash 的方法,对比了 WSL 的优缺点后,详细阐述了 Git Bash 美化步骤。包括安装 Git 并勾选相关选项,下载并配置 ZSH,安装并设置 Windows Terminal,以及安装 oh-my-zshzsh-autosuggestions 插件并进行相应配置。最终使 Git Bash 拥有类似 Mac 终端的体验,提升 Windows 用户的命令行操作体验和效率。

本文参考至:Using Zsh and zsh-autosuggestions on Windows Terminal with Oh My Posh theme - DEV Community

### 特征金字塔网络中的特征融合模块 #### FPN结构概述 Feature Pyramid Network (FPN) 是一种用于目标检测和其他视觉识别任务的有效架构。该网络通过构建一个多尺度的特征金字塔,增强了模型捕捉不同大小物体的能力。 #### 特征融合机制详解 在传统的FPN设计中,自顶向下(top-down)路径与横向连接(lateral connections)相结合的方式被用来实现特征融合[^1]。具体来说: - **顶层到底层传递**:从最深也是分辨率最低的一层开始,每一层都会接收到来自分辨率更高的相邻下一层经过上采样后的特征图,并与其自身的特征图相加。 - **横向连接**:对于每一个层次上的节点,除了来自上方的信息之外还会加上同位置但是更浅层(更高分辨率)处提取出来的特征作为补充。这种做法可以有效地将低级别的空间细节信息和高级别的语义信息结合起来。 #### 应用实例展示 下面给出一段Python代码片段展示了如何在一个简单的卷积神经网络框架内实现上述提到的功能: ```python import torch.nn as nn class TopDownPathway(nn.Module): def __init__(self, num_channels=256): super(TopDownPathway, self).__init__() # 定义1x1卷积操作用于调整通道数一致 self.conv_1x1 = nn.Conv2d(num_channels, num_channels, kernel_size=1) def forward(self, top_feature, lateral_feature): """ :param top_feature: 来自更深一层的特征图 :param lateral_feature: 当前层原始特征图 返回融合后的特征图 """ upsampled_top = nn.functional.interpolate( input=top_feature, size=(lateral_feature.shape[-2], lateral_feature.shape[-1]), mode='nearest' ) fused_feature = self.conv_1x1(lateral_feature + upsampled_top) return fused_feature ``` 此段代码实现了基本的top-down pathway逻辑,其中包含了两个主要部分——`nn.Conv2d()`函数负责执行必要的维度匹配;而`nn.functional.interpolate()`则完成了对高层特征的空间放大以便于后续叠加运算。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

听到微笑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值