OS Xterminal文本堆叠在本身之上

我在Mac OS X Lion的terminal应用程序中遇到了一个奇怪的问题。 当我input一行很长的文本时,当它到达terminal窗口的边缘时,它应该换行到下一行,它将继续在上面的行的文本上键入。

这里有一些截图来帮助说明这个问题:

在我的文本到达窗口边缘之前:

之前

文字到达窗口边缘之后:

后

我也提供了我的文本和窗口设置的截图,以防这些可能会有所帮助。

文本设置:

文本

窗口设置:

窗口

预先感谢您提供的任何帮助。 我有这个问题一段时间,只是从来没有解决它。 当我进入需要大grep命令和长path名的东西时,现在真的变成了一个痛苦的东西。

PS1环境variables决定了shell的提示符是什么样的。 man bash提供了完整的文档。 (其中有几个,对于不同的模式)。

有许多文件可能被设置,通常是~/.profile~/.bashrc/etc/profile/etc/bashrc

如果你要在里面有颜色代码或其他控制序列,你必须正确包装\[\] (而不是包装正常文本),否则行编辑可能会变得像你的情况。 我build议将PS1重置为默认值,然后小心地逐项添加着色。

例如:

 PS1='\[\033[1m\033[32m\]\u@\h \w\[\033[0m\]\$ ' ^^^^^^^^^^^^^^^ ^^^^^^^ 

着色命令带下划线。 请注意它们是如何被\[ \]包围的。

我有同样的问题,我发现如果你改变

高级> 仿真 >将terminal声明为:ANSI。

这解决了彩色PS1问题。 与Macterminal

创build一个奇怪的行为:我find了解决我的问题与@koiyu答案。

https://apple.stackexchange.com/questions/37001/strange-behavior-in-terminal-with-custom-bash-profile/37036#37036

由于错误地使用颜色代码,我曾经有过相同的问题。 这是我的PS1解决了这个问题。 同样,如果你使用GIT,那么这也将有助于显示你正在工作的git分支,以及你的工作树是否脏。 把它放在.profile或.bash_profile中

 # Git branch in prompt. parse_git_branch() { git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/' } parse_git_dirty() { st=$(git status 2>/dev/null | tail -n 1) if [[ $st == "" ]]; then echo '' elif [[ $st == "nothing to commit (working directory clean)" ]]; then echo '' elif [[ $st == 'nothing added to commit but untracked files present (use "git add" to track)' ]]; then echo '?' else echo '*' fi } # coloring the terminal comman line SB_GREEN="\[\033[1;32m\]" SB_BLUE="\[\033[1;34m\]" SB_RED="\[\033[1;31m\]" SB_NOCOLOR="\[\033[0m\]" export PS1="$SB_GREEN\u@\h$SB_NOCOLOR: $SB_BLUE\w$SB_GREEN\$(parse_git_branch)$SB_RED\$(parse_git_dirty)$SB_NOCOLOR $ " 

希望这可以帮助。

在仓鼠基因的指导下,我能够弄清楚如何使它发挥出色。 使用这个怪胎的东西指南 , 这是我的汤米教程 ,我能够定义我希望我的PS1文本显示。 改变这个更简单的东西,消除了我遇到的奇怪的重叠文本问题。

之前:

之前

后:

后

我只是编辑我的.bash_profile并添加了以下行:

 export PS1="[\u@\h] > "; 

然后,我去了,改变了窗户的颜色,因为我可以。

原来的问题是,PS1有一个新的线(任何人遇到这个)

通常它不正确地逃脱颜色代码,但如果它不是,你有一个新的行在你的PS1