linux上设置git高亮
公司的测试环境没有配置cicd,每次只能自己去服务器上拉取代码,编译开发,吐槽一下,比较难用。而且我们的测试服务器的终端也是全黑的,很难用,前期项目开发比较紧张,没有时间搞这个,忍了,最近稍微好点了,还是别将就了,改一下吧。这块儿知识很少用,之前做过类似的工作,但是忘完了,这次重新走了一遍,记录一下。
当前效果是
当前整个屏幕都是黑白的,看起来很不舒服,路径显示的只是当前路径,也不是全路径,git status等也没有彩色。
[dev@ksearch-test1 test]$
[dev@ksearch-test1 test]$ cd /deploy/test/
[dev@ksearch-test1 test]$ pwd
/deploy/test
想要达到的效果是
并且git status
对应的能够进行高亮显示
处理逻辑
主体的方式一般都是通过PS1这种环境变量来实现
查了一下,git的官方有一个实现。基本的实现shell是
# git 设置
source /xxxx/git-completion.bash
GIT_PS1_SHOWDIRTYSTATE=true
GIT_PS1_SHOWCOLORHINTS=true
source /xxxx/git-prompt.sh
PROMPT_COMMAND='__git_ps1 "[\t][\u@\h:\w]" "\\\$ "'
但是这样的话分支高亮了,但是前面的路径没有高亮,效果差那么一点点。
这里的实现是通过PROMPT_COMMAND
,PROMPT_COMMAND
是一个特殊的变量,会在PS1,PS2,PS3,PS4之前执行,所以可以用它来设置这些PS,__git_ps1
是在git-prompt.sh
中设置的一个函数。翻开了一下对应的函数,其中确实有对PS1的设置,修改一下对应的设置。总共有两处。
PS1="$ps1pc_start$ps1pc_end"
PS1="$ps1pc_start$gitstring$ps1pc_end"
修改为
PS1="\[\e[35;1m\]$ps1pc_start\[\e[0m\]$ps1pc_end"
PS1="\[\e[35;1m\]${ps1pc_start}\[\e[0m\]$gitstring$ps1pc_end"
这个颜色设置完变成了紫色,感觉不是很好看,最终选择了青绿色,看起来更舒服
PS1="\[\e[36;1m\]$ps1pc_start\[\e[0m\]$ps1pc_end"
PS1="\[\e[36;1m\]${ps1pc_start}\[\e[0m\]$gitstring$ps1pc_end"
接着设置git
git config --global color.status auto
于是就都变成带颜色的了,这里可能对于颜色设置有点疑问
颜色设置
PS1设置字符颜色的格式为:
\[\e[F;Bm\].....\[\e[0m\]
或者
\[\033[F;Bm\].....\[\033[0m\]
其中“F”为字体颜色,编号为30-37,“B”为背景颜色,编号为40-47,[\e[0m] 结束颜色设定。
“B”还可以设置其他格式,例如为1时,将显示加亮加粗的文字,详见下表
F 字体颜色 | B 背景颜色 | 颜色 | B 其他格式 | 其他格式的含义 |
---|---|---|---|---|
30 | 40 | 黑色 | 代码 | 含义 |
31 | 41 | 红色 | 0 | OFF |
32 | 42 | 绿色 | 1 | 高亮显示 |
33 | 43 | 黄色 | 4 | underline |
34 | 44 | 蓝色 | 5 | 闪烁 |
35 | 45 | 紫红色 | 7 | 反白显示 |
36 | 46 | 青蓝色 | 8 | 不可见 |
37 | 47 | 白色 |