2

I was styling my PS1-Prompt to resemble the iPython-Prompt as:

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"

enter image description here

However, sometimes i get weird issues like, that the beginning of the last executed command is still there after the prompt and can't be deleted.

I think that it's an issue with my way of escaping the colors with \e[ ... ] and not something with bash or the suckless-terminal, that i'm using.

Can somebody help me out?

0

1 Answer 1

0

First see this answer of mine.

It's not immediately clear whether \n should be considered printing or non-printing, or if the division is the same as printable vs. non-printable (like in the context of printable ASCII characters).

When it comes to PS1, however, I would say \n should be called "printing" because it affects the size of the prompt and this is what matters here. You should put both occurrences of \n outside of \[ \].

The first \n is explicitly inside \[ \]. The second one (at the beginning of PS1SECONDLINE) looks like it's not at the first glance, but it is as well. There is an unmatched \[ in PS1FIRSTLINE and when the whole PS1 is created the matching \] comes from PS1SECONDLINE.

These are your variables with proper modifications that put \n outside of \[ \]:

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"

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .