通过 Windows 终端中的脚本设置 git bash 配色方案

Posted

技术标签:

【中文标题】通过 Windows 终端中的脚本设置 git bash 配色方案【英文标题】:Set git bash color scheme via script in Windows Terminal 【发布时间】:2020-10-06 21:26:31 【问题描述】:

为了设置我的终端主题,我通常使用打印 ANSI 控制序列的脚本。例如,

echo -e "\033]11;rgb:20/20/30\033\\"

将背景颜色设置为 RBG #202030。这适用于 git-bash+mintty,它适用于 WSL+Windows 终端。不幸的是,它不适用于 git-bash+Windows 终端。相反,它只是输出一个\,而不改变配色方案。

有人有解决此问题的想法吗?

我尝试过的几件事:

尝试输出彩色文本,例如echo -e "\033[44m\033[37m Test \033[0m"。这很好用。 检查 $TERM 环境变量。它等于xterm-256color,就像在 WSL 中一样(有效)。

如果重要的话,这是我在 Windows 终端中用来启动 git bash 的命令设置:

"commandline": "C:/Program Files/Git/usr/bin/bash.exe -i -l",

【问题讨论】:

【参考方案1】:

您的问题似乎是您所在环境的本地问题。确保您使用的是最新版本的 Windows 终端和 git bash,并可能重新安装它们。我是一个正在运行的 Windows 终端 1.0.1401.0 和 git bash 安装程序 2.27.0(安装时没有修改 PATH 也没有过期设置),我可以使用以下命令在 Windows 终端中更改终端的背景:echo -e "\033]11;rgb:20/20/30\033\\

【讨论】:

谢谢@apena!升级到 git 2.27.0(我相信从 2.1x)解决了这个问题 :)【参考方案2】:

我建议在 settings.json 中为 Windows 终端使用自定义配色方案,因为它具有持久性并且可以使用十六进制颜色代码完全自定义。

在 settings.json 中:

    "commandline": "C:/Program Files/Git/usr/bin/bash.exe -i -l", 行之后添加一个新属性:"colorScheme": "Nicks",。如果它是对象中的最后一个属性,则删除逗号。 在整个 profiles 属性之后添加一个 schemes 属性,其对象如下所示:
    "schemes": [
        
            "name" : "Nicks",
            "background" : "#202030",
            "black" : "#282C34",
            "blue" : "#61AFEF",
            "brightBlack" : "#7FB323",
            "brightBlue" : "#00AFEF",
            "brightCyan" : "#56B6C2",
            "brightGreen" : "#AAD76F",
            "brightPurple" : "#CEE066",
            "brightRed" : "#FC7474",
            "brightWhite" : "#DCE4DF",
            "brightYellow" : "#22F901",
            "cyan" : "#70E8F8",
            "foreground" : "#CAE0AC",
            "green" : "#6A8854",
            "purple" : "#C678DD",
            "red" : "#FB4242",
            "white" : "#DCDFE4",
            "yellow" : "#E5C07B"
        
    ],

如果schemes 是对象中的最后一个属性,则删除逗号。

保存文件,更改应立即生效,无需重新加载 shell。

【讨论】:

谢谢@apena。我意识到我可以在 Windows 终端设置中设置主题,但我更喜欢使用主题 shell 脚本(如原始问题中所述),因为它们独立于正在使用的特定终端模拟器,因此更便携。它们适用于任何支持 ANSI 控制序列的终端仿真器。 Windows Terminal 显然有这样的支持(因为它可以与 WSL 一起使用),但是 git-bash 和 Windows Terminal 的组合存在一些问题。 感谢您的澄清。为了帮助您解决此问题,我安装了 git bash 2.27.0 并在 Windows 终端(版本:1.0.1401.0)中为其创建了配置文件,在选项卡中打开了 git bash,我可以使用以下命令更改背景:@ 987654328@。因此,您的问题最可能是您特定环境的本地问题。

以上是关于通过 Windows 终端中的脚本设置 git bash 配色方案的主要内容,如果未能解决你的问题,请参考以下文章

Windows 终端中的 Git Bash 在单独的窗口中打开

如何检测 Python 是不是在 Git Bash 终端或 Windows cmd 中运行?

最新的vscode中修改默认的终端为Git Bash

最新的vscode中修改默认的终端为Git Bash

如何在终端中执行 Ruby 脚本?

Windows下Git免密码