在OSX上键入长字符时,终端线已损坏

时间:2018-12-17 08:01:45

标签: macos terminal command-line-interface line

我经常使用Terminal,这通常意味着我不得不为执行从Terminal到App的命令放置长句。 我不知道何时发生此行吸引(或中断)。 有什么解决方案可以解决此问题而无需调整端子大小?

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:2)

根据我们的讨论,您应该编辑~/.bash_profile并替换以下行:

export PS1="\u@\h \W[\033[32m]\$(parse_git_branch)[\033[00m] $ "

有这行:

export PS1="\u@\h \W\[\033[32m\]\$(parse_git_branch)\[\033[00m\] $ "

然后打开一个新的终端窗口,然后尝试是否更好。

自定义PS1变量时,您需要用\[\]包围不可打印的字符,否则bash不能正确计算提示的长度,因此光标会重叠文本


更新

我只需要替换这段代码即可:

parse_git_branch() {
  git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* (.*)/ (\1)/'
}
export PS1="\u@\h \W[\033[32m]\$(parse_git_branch)[\033[00m] $ "

有这行:

export PS1="\[\033[36m\]\u\[\033[m\]@\[\033[32m\] \[\033[33;1m\]\w\[\033[m\] (\$(git branch 2>/dev/null | grep '^*' | colrm 1 2)) \$ "

或者,如果您要坚持使用解决方案,请用以下更正代替它:

parse_git_branch() {
  git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/ (\1)/'
}

export PS1="\u@\h \W\[\033[32m\]\$(parse_git_branch)\[\033[00m\] $ "

UPDATE2

替换此行:

export PROMPT_COMMAND="echo -n \(\$(date +%H:%M:%S)\)\ "

此行:

export PROMPT_COMMAND=update_terminal_cwd

现在您的终端应该可以了!如果您想在提示前添加日期和时间, 然后编辑此行:

export PS1="\u@\h \W\[\033[32m\]\$(parse_git_branch)\[\033[00m\] $ "

像这样:

export PS1="($(date +%H:%M:%S)) \u@\h \W\[\033[32m\]\$(parse_git_branch)\[\033[00m\] $ "