Терминальная линия сломалась при вводе длинных символов в OSX

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

Терминальная линия сломалась при вводе длинных символов в OSX

Терминальная линия сломалась при вводе длинных символов в OSX

Трудно понять, в чем именно проблема, по двум скриншотам. Иногда мой терминал выходит из строя, потому что после запуска новой командной строки курсор перекрывает текст, но обычно, набрав «Enter», все снова в порядке. Очевидно, это не ваша проблема?

Yoric 17.12.2018 09:47

Я хочу предотвратить наложение, которое приведет к ошибке при изменении или вводе. Также я не хочу нажимать клавишу ввода или изменять размер каждый раз. :( Я загрузил для него видео. Спасибо. youtu.be/f2pAQOkUSKk

Logan Lee 18.12.2018 02:39

Спасибо, что нашли время предоставить видео. Ваша настройка подсказок, вероятно, будет испорчена. Вы можете записать результат этой команды? grep "export PS1 = " ~/.* 2>/dev/null

Yoric 18.12.2018 03:24

(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 $ извините за поздний ответ

Logan Lee 18.12.2018 06:43
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
4
336
1

Ответы 1

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

Logan Lee 18.12.2018 08:59

Думаю, не работает функция parse_git_branch(). Я обновил свое сообщение, чтобы предложить другую строку.

Yoric 18.12.2018 09:56

PROMPT_COMMAND - это тот, кто его испортил, но комментировать его будет недостаточно, см. Мое обновление2 в моем ответе ...

Yoric 19.12.2018 03:36

круто, наконец-то это исправлено.! Спасибо! Надеюсь, у вас будет блестящий день, полный удачи!

Logan Lee 19.12.2018 06:26

Другие вопросы по теме