如何在 Windows 中更改 Git 终端的标题?
How to change title of Git terminal in Windows?
我在 Windows 10 工作,通常我最多打开 5 个 CMD windows。我这样工作是因为我需要 运行 具有不同数据的同一个应用程序,并在抛出任何异常时保持监控。
我设置了一个数字作为 window 的标题(使用 title
命令)而不是默认文本,以便轻松识别我正在工作的 window并能够使用 Alt+Tab
(an example of how I work with my CMD windows)
识别它们并在它们之间进行更改
最近我开始使用 Git,我非常喜欢 Windows 的 Git Bash 终端。我想像使用 CMD windows 一样使用 Git Bash 终端,但我找不到任何方法来更改 window 标题。我搜索了一下,发现 these instructions 和其他一些(我无法粘贴,因为我还不允许 post 超过两个链接),但它似乎只能通过设置不同的默认标题。我想随时将 window 标题更改为我选择的任何自定义文本。
这可能吗?是否有像 title
这样的命令可用于 Git Bash?
你在 this link
的正确轨道上
如果你稍微修改一下 git-prompt.sh
脚本(对我来说,它位于 c:\Program Files (x86)\Git\etc\profile.d\git-prompt.sh
),你可以随意设置标题。
注意:您需要 运行 VS Code、Notepad++ 或类似的管理员才能写回此目录。
先保存git-prompt.sh
的备份(如git-prompt.backup.sh
),然后修改git-prompt.sh
的开头如下:
if test -z "$GITTITLEPREFIX" # if not empty
then
GITTITLEPREFIX="Git-Bash => " # prefix that will have current pwd appended after it
fi
if test -f ~/.config/git/git-prompt.sh
then
. ~/.config/git/git-prompt.sh
else
if test -n "$GITTITLE"
then ##### Set window title directly to GITTITLE if not empty
PS1='\[3]0;$GITTITLE[=10=]7\]'
else ##### Set window title to GITTITLE PREFIX plus the PWD
PS1='\[3]0;$GITTITLEPREFIX${PWD//]^[:ascii:]]/?}[=10=]7\]'
fi
fi
###### Leave the rest of the file the same
PS1="$PS1"'\n'
PS1="$PS1"'\[3[32m\]'
###### Etc.
这将首先检查 GITTITLEPREFIX 是否为空,如果不是,它将设置为 "Git-Bash => ",类似于链接文章中的内容。这将在其后附加当前路径,因此如果您想要“1:$PWD”,则将 GITTITLEPREFIX 设置为“1:”,如下所示:
GITTITLEPREFIX="1 : "
否则,您可以将 GITTITLE 设置为任何 non-empty 值,然后整个标题将完全设置为 GITTITLE 的内容(不附加 PWD),因此如果您只想要“1”,请使用这个:
GITTITLE="1"
然后运行脚本。在我的道路上,我是这样做的:
. "/c/Program Files (x86)/Git/etc/profile.d/git-prompt.sh"
并且标题应该更改。当然,您可以为其添加别名或在路径中的某个位置创建一个单独的脚本,这样 运行 就简单多了,标题可以只是一个参数。我将把它留作 reader...
的练习
我只对脚本做了很少的修改就解决了我的问题。
第一个,为了传递我想要的 window 名称,我添加了变量 name=
并将其设置在标题变量中:
name=
PS1='\[3]0;$name[=10=]7\]' # set window title
第二个,推荐here,我评论下几行:
#PS1="$PS1"'\[3[35m\]' # change to purple
#PS1="$PS1"'$MSYSTEM ' # show MSYSTEM
最终代码如下:
if test -f /etc/profile.d/git-sdk.sh
then
TITLEPREFIX=SDK-${MSYSTEM#MINGW}
else
TITLEPREFIX=$MSYSTEM
fi
name=
PS1='\[3]0;$name[=12=]7\]' # set window title
PS1="$PS1"'\n' # new line
PS1="$PS1"'\[3[32m\]' # change to green
PS1="$PS1"'\u@\h ' # user@host<space>
#PS1="$PS1"'\[3[35m\]' # change to purple
#PS1="$PS1"'$MSYSTEM ' # show MSYSTEM
PS1="$PS1"'\[3[33m\]' # change to brownish yellow
PS1="$PS1"'\w' # current working directory
if test -z "$WINELOADERNOEXEC"
then
GIT_EXEC_PATH="$(git --exec-path 2>/dev/null)"
COMPLETION_PATH="${GIT_EXEC_PATH%/libexec/git-core}"
COMPLETION_PATH="${COMPLETION_PATH%/lib/git-core}"
COMPLETION_PATH="$COMPLETION_PATH/share/git/completion"
if test -f "$COMPLETION_PATH/git-prompt.sh"
then
. "$COMPLETION_PATH/git-completion.bash"
. "$COMPLETION_PATH/git-prompt.sh"
PS1="$PS1"'\[3[36m\]' # change color to cyan
PS1="$PS1"'`__git_ps1`' # bash function
fi
fi
PS1="$PS1"'\[3[0m\]' # change color
PS1="$PS1"'\n' # new line
PS1="$PS1"'$ ' # prompt: always $
MSYS2_PS1="$PS1" # for detection by MSYS2 SDK's bash.basrc
我暂时把脚本复制了一份,贴在了C盘,方便每次需要改标题的时候执行,按照我的路径,如下:
$ . /c/changename.sh
我仍在学习脚本编写,因此我可以设置别名。正如@LightCC 所说,"I'll leave that as an exercise for the reader..."
这个帖子已经有几个月了。但我认为替代方案会有所帮助
您可以将以下行添加到您的用户配置文件文件夹中的 .bashrc 文件
export TITLEPREFIX="Git Bash"
您希望 Git bash 成为标题前缀的地方。这是用户特定的更改。所以如果一台机器被多个用户使用各自的登录名,每个人都可以自定义自己的标题。
一个简单的选项是 echo -ne "\e]0;YOUR TITLE HERE\a"
。
在 JSON 设置中写入 Git 控制台:
"name": "Git Bash",
"tabTitle": "Git Bash",
"suppressApplicationTitle": true
你可以使用
export MYTITLE=abcd; export PS1=$(echo $PS1 | sed -r "s/(0;).*?(\\007)/$MYTITLE/")
它找到标题的正则表达式并将其替换为$MYTITLE
。
我可能是错的,但我假设标题在 $PS1
中介于 0;
和 [=14=]7
之间。它对我有用。
或者您可以将下一个函数添加到您的 .bashrc
(或 .bash_profile
)
ttt() {
# change title in gitbash
export PS1=$(echo $PS1 | sed -r "s/(0;).*?(\\007)//")
}
然后随时使用 ttt "new title"
我在 Windows 10 工作,通常我最多打开 5 个 CMD windows。我这样工作是因为我需要 运行 具有不同数据的同一个应用程序,并在抛出任何异常时保持监控。
我设置了一个数字作为 window 的标题(使用 title
命令)而不是默认文本,以便轻松识别我正在工作的 window并能够使用 Alt+Tab
(an example of how I work with my CMD windows)
最近我开始使用 Git,我非常喜欢 Windows 的 Git Bash 终端。我想像使用 CMD windows 一样使用 Git Bash 终端,但我找不到任何方法来更改 window 标题。我搜索了一下,发现 these instructions 和其他一些(我无法粘贴,因为我还不允许 post 超过两个链接),但它似乎只能通过设置不同的默认标题。我想随时将 window 标题更改为我选择的任何自定义文本。
这可能吗?是否有像 title
这样的命令可用于 Git Bash?
你在 this link
的正确轨道上如果你稍微修改一下 git-prompt.sh
脚本(对我来说,它位于 c:\Program Files (x86)\Git\etc\profile.d\git-prompt.sh
),你可以随意设置标题。
注意:您需要 运行 VS Code、Notepad++ 或类似的管理员才能写回此目录。
先保存git-prompt.sh
的备份(如git-prompt.backup.sh
),然后修改git-prompt.sh
的开头如下:
if test -z "$GITTITLEPREFIX" # if not empty
then
GITTITLEPREFIX="Git-Bash => " # prefix that will have current pwd appended after it
fi
if test -f ~/.config/git/git-prompt.sh
then
. ~/.config/git/git-prompt.sh
else
if test -n "$GITTITLE"
then ##### Set window title directly to GITTITLE if not empty
PS1='\[3]0;$GITTITLE[=10=]7\]'
else ##### Set window title to GITTITLE PREFIX plus the PWD
PS1='\[3]0;$GITTITLEPREFIX${PWD//]^[:ascii:]]/?}[=10=]7\]'
fi
fi
###### Leave the rest of the file the same
PS1="$PS1"'\n'
PS1="$PS1"'\[3[32m\]'
###### Etc.
这将首先检查 GITTITLEPREFIX 是否为空,如果不是,它将设置为 "Git-Bash => ",类似于链接文章中的内容。这将在其后附加当前路径,因此如果您想要“1:$PWD”,则将 GITTITLEPREFIX 设置为“1:”,如下所示:
GITTITLEPREFIX="1 : "
否则,您可以将 GITTITLE 设置为任何 non-empty 值,然后整个标题将完全设置为 GITTITLE 的内容(不附加 PWD),因此如果您只想要“1”,请使用这个:
GITTITLE="1"
然后运行脚本。在我的道路上,我是这样做的:
. "/c/Program Files (x86)/Git/etc/profile.d/git-prompt.sh"
并且标题应该更改。当然,您可以为其添加别名或在路径中的某个位置创建一个单独的脚本,这样 运行 就简单多了,标题可以只是一个参数。我将把它留作 reader...
的练习我只对脚本做了很少的修改就解决了我的问题。
第一个,为了传递我想要的 window 名称,我添加了变量 name=
并将其设置在标题变量中:
name=
PS1='\[3]0;$name[=10=]7\]' # set window title
第二个,推荐here,我评论下几行:
#PS1="$PS1"'\[3[35m\]' # change to purple
#PS1="$PS1"'$MSYSTEM ' # show MSYSTEM
最终代码如下:
if test -f /etc/profile.d/git-sdk.sh
then
TITLEPREFIX=SDK-${MSYSTEM#MINGW}
else
TITLEPREFIX=$MSYSTEM
fi
name=
PS1='\[3]0;$name[=12=]7\]' # set window title
PS1="$PS1"'\n' # new line
PS1="$PS1"'\[3[32m\]' # change to green
PS1="$PS1"'\u@\h ' # user@host<space>
#PS1="$PS1"'\[3[35m\]' # change to purple
#PS1="$PS1"'$MSYSTEM ' # show MSYSTEM
PS1="$PS1"'\[3[33m\]' # change to brownish yellow
PS1="$PS1"'\w' # current working directory
if test -z "$WINELOADERNOEXEC"
then
GIT_EXEC_PATH="$(git --exec-path 2>/dev/null)"
COMPLETION_PATH="${GIT_EXEC_PATH%/libexec/git-core}"
COMPLETION_PATH="${COMPLETION_PATH%/lib/git-core}"
COMPLETION_PATH="$COMPLETION_PATH/share/git/completion"
if test -f "$COMPLETION_PATH/git-prompt.sh"
then
. "$COMPLETION_PATH/git-completion.bash"
. "$COMPLETION_PATH/git-prompt.sh"
PS1="$PS1"'\[3[36m\]' # change color to cyan
PS1="$PS1"'`__git_ps1`' # bash function
fi
fi
PS1="$PS1"'\[3[0m\]' # change color
PS1="$PS1"'\n' # new line
PS1="$PS1"'$ ' # prompt: always $
MSYS2_PS1="$PS1" # for detection by MSYS2 SDK's bash.basrc
我暂时把脚本复制了一份,贴在了C盘,方便每次需要改标题的时候执行,按照我的路径,如下:
$ . /c/changename.sh
我仍在学习脚本编写,因此我可以设置别名。正如@LightCC 所说,"I'll leave that as an exercise for the reader..."
这个帖子已经有几个月了。但我认为替代方案会有所帮助
您可以将以下行添加到您的用户配置文件文件夹中的 .bashrc 文件
export TITLEPREFIX="Git Bash"
您希望 Git bash 成为标题前缀的地方。这是用户特定的更改。所以如果一台机器被多个用户使用各自的登录名,每个人都可以自定义自己的标题。
一个简单的选项是 echo -ne "\e]0;YOUR TITLE HERE\a"
。
在 JSON 设置中写入 Git 控制台:
"name": "Git Bash",
"tabTitle": "Git Bash",
"suppressApplicationTitle": true
你可以使用
export MYTITLE=abcd; export PS1=$(echo $PS1 | sed -r "s/(0;).*?(\\007)/$MYTITLE/")
它找到标题的正则表达式并将其替换为$MYTITLE
。
我可能是错的,但我假设标题在 $PS1
中介于 0;
和 [=14=]7
之间。它对我有用。
或者您可以将下一个函数添加到您的 .bashrc
(或 .bash_profile
)
ttt() {
# change title in gitbash
export PS1=$(echo $PS1 | sed -r "s/(0;).*?(\\007)//")
}
然后随时使用 ttt "new title"