На основании нашего обсуждения вы должны отредактировать ~/.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\] $ "
ОБНОВЛЕНИЕ2
Замените эту строку:
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\] $ "