问题
我有一个.bash_profile
,具有以下设置:
# Git configuration
## Branch name in prompt
source ~/.git-prompt.sh
PS1='[\W$(__git_ps1 " (%s)")]\$ '
export PROMPT_COMMAND='echo -ne "\033]0;${PWD/#$HOME/~}\007"'
这些设置输出以下提示:
[my-git-repo(master)]$ ls
index.html
[my-git-repo(master)]$
不错。您具有基本的工作目录(\W
),分支指示-很好而且很小。但是,我希望提示符看起来像这样,因为对于我来说,视觉上解析大型输出更容易:
[my-git-repo(master)]$ ls
index.html
[my-git-repo(master)]$
我尝试过的解决方案
因此,为了实现这一点,我将.bash_profile
更改为:
# Git configuration
## Branch name in prompt with newlines
source ~/.git-prompt.sh
PROMPT_COMMAND='PROMPT_COMMAND='\''PS1="\n[\W$(__git_ps1 " (%s)")]\$ "'\'
export PROMPT_COMMAND='echo -ne "\033]0;${PWD/#$HOME/~}\007"'
但是,新提示如下所示:
[my-git-repo]$ ls
index.html
[my-git-repo]$
如您所见,ls
之后没有换行(我尝试合并它的尝试失败),index.html
之后没有换行,并且分支指示(master)
消失了。
如此接近,但我不确定自己在做什么错。感谢您的帮助!
答案 0 :(得分:2)
您需要使用PS0
(受bash
4.4或更高版本支持)在输入后添加空白行。您也可以简单地在PS1
的开头添加换行符。
PS0='\n'
PS1='\n[\W$(__git_ps1 " (%s)")]\$ '
在4.4之前,您需要安装一个复杂的DEBUG
陷阱以确保它仅在执行 first 受影响的命令之前添加换行符;我不会尝试正确地做到这一点。