OS X终端文本堆叠在自身之上

Dar*_*ryn 44 macos terminal osx-lion

我在Mac OS X Lion的终端应用程序中遇到了一个奇怪的问题.当我输入一长串文本时,当它到达终端窗口的边缘时应该换行到下一行,它会继续在文本上方的行上键入.

以下是一些帮助说明问题的屏幕截图:

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

之前

文本到达窗口边缘后:

后

我还提供了我的文本和窗口设置的屏幕截图,以防有些帮助.

文字设定:

文本

窗口设置:

窗口

提前感谢您提供的任何帮助.我有一段时间没有这个问题,只是从未接触过它.当我遇到需要大grep命令和长路径名的东西时,它现在真的变得很痛苦.

ham*_*ene 67

PS1环境变量确定shell的提示符.man bash提供完整的文档.(对于不同的模式,实际上有几个).

有迹象表明,可设置它,通常是一个文件的数量~/.profile,~/.bashrc,/etc/profile/etc/bashrc.

如果您要在其中包含颜色代码或其他控制序列,则必须使用\[\]正确包装它们(并且不包装正常文本),否则行编辑可能会像您的情况一样混乱.我建议重置PS1为默认值,然后小心地逐项添加着色.

例如:

PS1='\[\033[1m\033[32m\]\u@\h \w\[\033[0m\]\$ '
       ^^^^^^^^^^^^^^^            ^^^^^^^
Run Code Online (Sandbox Code Playgroud)

着色命令带有下划线.注意他们是如何被包围的\[ \].

  • 如果您也使用`\ e`,这也有效,例如:`\ [\ e [32m \]\u\[\ e [36m \]\T\[\ e [32m \]\w\[\ e [0m \] \\ $`.不是每个`\ e`在lef上都有一个`\ [`,而每个`m`在右边都有一个`\]`. (4认同)

gun*_*sus 7

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

高级> 仿真 >将终端声明为:ANSI.

这解决了彩色PS1问题.使用Mac终端

但是创造了一个奇怪的行为:我找到了@koiyu回答我的问题的解决方案.

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

  • 提供的链接为我解决了这个问题,与“\e[...”格式一起使用的颜色需要正确的转义序列“\[\e[...\]”以避免破坏您的控制台行为。 (2认同)

Jaz*_*zer 5

由于错误使用颜色代码,我曾经遇到过同样的问题.这是我的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 $ "
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.