win10 下 git 的美化

最初是忍受不了 win10 下 cmd 和 powershell 的丑和难用,想找一个 win10 下像 linux 那样的终端,百度,google 的半天之后,最终锁定了 Windows Terminal(终端) + Git Bash(Shell)的方案。

设置快捷键

为了能够快速打开 Git Bash,我建议下给它设置一个全局快捷键。(其实也是 linux 的终端全局快捷键)

  • 按 Win 键,然后搜索 Git Bash,点击「打开文件所在位置」
    git bash 1

  • 右键快捷方式,点击「属性」,然后在这里设置一个快捷键。正常情况下是按照 linux 的喜欢设置 ctrl+Alt+T 的,不过我这好像被占用了,就加了哥 shift 上。。
    git bash 2

  • 再点击「高级」,把「以管理员身份运行」勾上,后面会在终端上改文件,勾选它可以避免很多麻烦。
    git bash 3

git 美化

#首先在用户根目录下新建一个名为 .minttyrc 的文件,这个是 git 的样式文件(?)

  • cd ~
  • touch .minttyrc
  • code .minttyrc

这里我使用的是 vscode,没有的老哥可以自己下一个,或者使用 vi。

# 美化代码
FontHeight=16
Font=Consolas
Transparency=low
FontSmoothing=full
Locale=zh_CN
Charset=GBK
Columns=88
Rows=26
OpaqueWhenFocused=no
Scrollbar=none
Language=zh_CN

ForegroundColour=131,148,150
BackgroundColour=0,43,54
CursorColour=220,130,71

BoldBlack=128,128,128
Red=255,64,40
BoldRed=255,128,64
Green=64,200,64
BoldGreen=64,255,64
Yellow=190,190,0
BoldYellow=255,255,64
Blue=0,128,255
BoldBlue=128,160,255
Magenta=211,54,130
BoldMagenta=255,128,255
Cyan=64,190,190
BoldCyan=128,255,255
White=200,200,200
BoldWhite=255,255,255

Term=xterm-256color
BellType=0

CtrlShiftShortcuts=yes
ConfirmExit=no
AllowBlinking=yes
BoldAsFont=no

完成之后保存,再重启 git bash,就能看到美化后的样子了。
同时会开启复制粘贴快捷键:Ctrl + Shift + C/V,需要 Git Bash 版本大于 2.20.0 才可以使用。

#仅仅是换了一个主题还不够,还需要更改终端提示符,更改 git 安装目录下 etc 目录里面的一个文件即可,这个文件也可以通过绝对路径访问到

  • code /etc/profile.d/git-prompt.sh
if test -f /etc/profile.d/git-sdk.sh
then
 TITLEPREFIX=SDK-${MSYSTEM#MINGW}
else
 TITLEPREFIX=$MSYSTEM
fi

if test -f ~/.config/git/git-prompt.sh
then
 . ~/.config/git/git-prompt.sh
else
 PS1='\[\033]0;Bash In $PWD\007\]' # 窗口标题
 PS1="$PS1"'\n'                                # 换行
 PS1="$PS1"'\[\033[32m\]'               # 绿色
 PS1="$PS1"'\u '                             # 用户名
 PS1="$PS1"'\[\033[0m\]'                # 灰色
 PS1="$PS1"'at '          # 自定义内容
 PS1="$PS1"'\[\033[35m\]'             # 粉红色
 PS1="$PS1"'\t '          # 时间
 PS1="$PS1"'\[\033[33m\]'             # 黄色
 PS1="$PS1"'\W '                            # 当前目录
 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"'\[\033[36m\]'  # change color to cyan
   PS1="$PS1"'`__git_ps1`'   # bash function
  fi
 fi
 PS1="$PS1"'\[\033[0m\]'        # 灰色
 PS1="$PS1"'$ '                       # 命令提示符
fi

MSYS2_PS1="$PS1"               # for detection by MSYS2 SDK's bash.basrc

上面的这些内容有中文注释的部分是我改过的,这个依据自己的喜好来改,如果看不懂上面的那些符号都是代表的什么意思,可以搜索下 Linux 下如何修改终端提示符 就会有很多参考资料。

在 VSCode 中配置 Git Bash

在 VSCode 中使用 Git Bash 只需要在 Settings.json 中添加如下两行即可,第一行中 bash.exe 的文件路径需要改成自己的,第二行是非必须配置,不配置无法使用 alias。

{
"terminal.integrated.shell.windows": "C:\Program Files\Git\bin\bash.exe",
"terminal.integrated.shellArgs.windows": ["--login", "-i"]
}

解决快捷键延迟问题

为 Git Bash 设置了全局快捷键后,可能出现按下快捷键后延迟两秒左右终端才打开的现象,只需要在服务中禁用掉 superFetch 即可,此服务在比较新的 win10 上改名为了 sysMain,禁用服务后重启操作系统生效

解决某些命令会卡住不动或无法上下选择脚手架选项的问题

alias 是一些命令的别名,可以用来简化命令。在用户根目录下新建 .bash_profile ,然后按如下格式自定义命令,保存后重启 git bash 就可以了。

使用某些命令,如 python、mongo、mysql、redis-cli 时会发现有卡住不动的现象,只需要在命令前面加上 winpty 即可,每次之性命都都要加这个会比较麻烦,可以设置 alias 重写命令;

  • cd ~
  • touch .bash_profile
  • code .bash_profile
alias wsl='winpty wsl'
alias mysql='winpty mysql -uroot -p'
alias mongo='winpty mongo'
alias redis-cli='winpty redis-cli'
alias npm='winpty npm'

很多脚手架工具在初始化项目的时候提供了可以上下选择选项的功能,该功能在 git bash 中可用,但是无法显示上下选择的效果,需要在命令前加上 winpty,同时脚手架命令需要加上后缀 .cmd,例如:

alias vue='winpty vue.cmd'

参考文章

Q.E.D.

知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

一介死肥宅程序员,希望世界和平