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答案。
由于错误地使用颜色代码,我曾经有过相同的问题。 这是我的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