如何在终端右侧显示git状态信息?

JJD*_*JJD 8 git bash zsh command-prompt

你知道是否有可能配置bash提示在右侧显示git状态/分支信息,因为zsh可以做到吗?这个从互联网上随机拍摄的屏幕显示了我的意思.

屏幕截图显示右侧的git状态

ZyX*_*ZyX 10

请尝试以下方法:

PS1='$(printf "%*s\r%s" $(( COLUMNS-1 )) "[$(git branch 2>/dev/null | grep '^*' | sed s/..//)] $(date +%H:%M:%S)" "heipei@wavefront:$PWD$ ")'
Run Code Online (Sandbox Code Playgroud)

请注意,您永远不会获得仅与bash完全匹配的行为.在上面的例子中,我看到以下不同之处:

  1. 运行命令(accept-linezsh方面的事件)时,不会清除提示的右侧部分.
  2. 如果您键入内容然后按<C-u>或,将清除提示的右侧部分<BS>.
  3. 如果在其上键入内容然后删除文本,则不会恢复提示的右侧部分.
  4. 如果您在其上键入内容,则提示的右侧部分不会消失,但此部分中的文本将被覆盖.


c00*_*ter -1

一种方法是使用tput计算终端的列数,并减去将要左右打印的字符数,然后使用该数字作为左右文本之间的空格数。用于printf构建线路。

简单的例子:

left="[${status}]\u@\h:\w\$ "
right="$(git symbolic-ref HEAD) $(date +%T)"
spaces="$(( $(tput cols) - ${#left} - ${#right} ))"
export PS1="$(printf "%s%${spaces}s\n" "$left" "$right")"
Run Code Online (Sandbox Code Playgroud)