在Mac OSX Yosemite终端中,当线路太长时,它会开始覆盖自己,因为没有换行

时间:2015-04-27 19:38:32

标签: macos terminal

我为终端设置了一些自动执行代码(内部.profile,因为我是root用户)所以git很好地着色。 Git的颜色确实很好,但现在当它进入第二行时我有重叠线的问题,它只是开始覆盖自己。这是我放的PS1的一部分,然后它开始引起问题:

PS1 ='[$(tput setaf 7)] \ u @ [$(tput setaf 2)] \ h:[$(tput setaf 4)] \ w $(tput setaf 1)] $(parse_git_branch)[ $(tput sgr0)] $'

有没有人知道这个PS1的好文献 - 终端显示功能?我对mac osx的终端很新,并且不知道PS1是什么(除非你真的知道你在做什么,它会破坏终端或者让它变得更好)?谢谢你们!

1 个答案:

答案 0 :(得分:2)

问题是如何定义提示:

PS1='[$(tput setaf 7)]\u@[$(tput setaf 2)]\h:[$(tput setaf 4)]\w$(tput setaf 1)]$(parse_git_branch)[$(tput sgr0)] $ '

您没有标记提示符的部分,这些部分将字符发送到非打印的终端(用于更改颜色)。使用bash手册 6.9 Controlling the Prompt 中的\[\]标记执行此操作:

  

\[ 开始一系列非打印字符。这可用于将终端控制序列嵌入到提示中。

     

\] 结束一系列非打印字符。

这是一个转义括号(并添加一个)的提示符:

PS1='\[$(tput setaf 7)\]\u@\[$(tput setaf 2)\]\h:\[$(tput setaf 4)\]\w\[$(tput setaf 1)\]$(parse_git_branch)\[$(tput sgr0)\] $ '