Я очень часто использую Терминал, что означает, что у меня возникает ситуация, когда мне приходится вводить длинную фразу для выполнения команды из Терминала в приложение. Я понятия не имею, когда это засасывание (или разрыв) линии происходило сейчас. есть ли какое-нибудь решение, чтобы исправить это без изменения размера терминала?
Я хочу предотвратить наложение, которое приведет к ошибке при изменении или вводе. Также я не хочу нажимать клавишу ввода или изменять размер каждый раз. :( Я загрузил для него видео. Спасибо. youtu.be/f2pAQOkUSKk
Спасибо, что нашли время предоставить видео. Ваша настройка подсказок, вероятно, будет испорчена. Вы можете записать результат этой команды? grep "export PS1 = " ~/.* 2>/dev/null
(14:42:55) Логан @ раздражающий gitlab $ grep "export PS1 = " ~ /.* 2> / dev / null /Users/Logan/.bash_profile:export PS1 = "\ u @ \ h \ W [\ 033 [32m] \ $ (parse_git_branch) [\ 033 [00m] $ "(14:43:03) Логан @ Annoymous gitlab $ извините за поздний ответ
Основываясь на нашем обсуждении, вы должны отредактировать свой ~/.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\] $ "
ну, у меня все еще такой же симптом ... я бы хотел показать эти строки. =================================== 66 # Отметка времени терминала 67 export PROMPT_COMMAND = "echo -n (\ $ (date +% H:% M:% S)) \ "68 69 # Ветвь Git в приглашении. 70 parse_git_branch () {71 git branch 2> / dev / null | sed -e '/ ^ [^ *] / d' -e 's / * (. *) / (\ 1) /' 72} 73 экспорт PS1 = "\ u @ \ h \ W [\ 033 [32m] \ $ (parse_git_branch) [\ 033 [00m] $ "
Думаю, не работает функция parse_git_branch()
. Я обновил свое сообщение, чтобы предложить другую строку.
PROMPT_COMMAND - это тот, кто его испортил, но комментировать его будет недостаточно, см. Мое обновление2 в моем ответе ...
круто, наконец-то это исправлено.! Спасибо! Надеюсь, у вас будет блестящий день, полный удачи!
Трудно понять, в чем именно проблема, по двум скриншотам. Иногда мой терминал выходит из строя, потому что после запуска новой командной строки курсор перекрывает текст, но обычно, набрав «Enter», все снова в порядке. Очевидно, это не ваша проблема?