2

Моя стилизация PS1-Prompt напоминала iPython-Prompt следующим образом:

PS1FIRSTLINE="\[\n\][\t] \[\e[1m\e[38;5;196m\]\u@\H\[\e[0m\] in \[\e[1m\e[38;5;196m\]\w\[\e[0m"
PS1SECONDLINE="\n\e[92m\]In [\[\e[1m\]\#\[\e[0m\]] \$ "
PS1="$PS1FIRSTLINE$PS1SECONDLINE"

Однако иногда я получаю странные проблемы, такие как то, что начало последней выполненной команды все еще там после приглашения и не может быть удалено.

Я думаю, что проблема в том, как я могу избежать цветов с помощью \e[ ... ] а не с помощью bash или suckless-терминала, который я использую.

Кто-нибудь может мне помочь?

1 ответ1

0

Сначала посмотри на мой ответ .

Не сразу понятно, следует ли считать \n печатью или не печатью, или же разделение такое же, как и для печати, а не для печати (как в контексте печатаемых символов ASCII).

Однако, когда дело доходит до PS1 , я бы сказал, что \n следует называть "печатью", потому что это влияет на размер приглашения, и это то, что здесь важно. Вы должны поместить оба вхождения \n вне \[ \] .

Первый \n явно внутри \[ \] . Второй (в начале PS1SECONDLINE) выглядит не на первый взгляд, но и на первый взгляд. В \[ PS1FIRSTLINE и когда весь PS1 создан, соответствующий \] приходит из PS1SECONDLINE .

Это ваши переменные с правильными модификациями, которые ставят \n вне \[ \]:

PS1FIRSTLINE="\n[\t] \[\e[1m\e[38;5;196m\]\u@\H\[\e[0m\] in \[\e[1m\e[38;5;196m\]\w\[\e[0m\]"
#             ^^ deleted embracing \[ \]                                    added closing ^^
PS1SECONDLINE="\n\[\e[92m\]In [\[\e[1m\]\#\[\e[0m\]] \$ "
#                ^^ added opening
PS1="$PS1FIRSTLINE$PS1SECONDLINE"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .