Терминальная строка разорвалась при вводе длинных символов в OSX - PullRequest
0 голосов
/ 17 декабря 2018

Я использую терминал очень часто, что означает, что у меня есть ситуация, когда я должен поместить длинную фразу для выполнения команды из терминала в приложение.Я понятия не имею, когда происходило сосание (или разрыв) этой линии.Есть ли решение, чтобы исправить это без определения размера терминала?

enter image description here

enter image description here

1 Ответ

0 голосов
/ 18 декабря 2018

На основании нашего обсуждения вы должны отредактировать ~/.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\] $ "
...