Copy paste string to terminal leave a dangling empty area appearance
If you see the bell on the title, it means when I deleting string it was reaching $ sign and give a bell warns. But the strange thing is my cursor is not completely clear the string, it is still leaving my URL left over there. I already checked PS1 on my bash profile and it looks like this
export PS1='\e[1;32m\W \t \e[1;31m\u \e[1;32m$ \e[0m'
But when I resize the window of the terminal, suddenly it turns back normal.
Solution 1:
You need to enclose the non-printable characters properly in \[...\]
block. This ensures that correct number of characters are counted while generating the prompt.
I had the same problem and here's the PS1 that gave no issues so far :
\[\e[30;47m\]$(parse_git_branch)\W\[\e[30;47m\]$\[\e[0m\]
That is my understanding of what I read on SO:
You should add
\[
before any starting ANSI code and add\]
after any ending ones. Example: in regular usage:\033[32mThis is in green\033[0m
for PS0/1/2/4:\[\033[32m\]This is in green\[\033[m\]
\[
is for start of a sequence of non-printable characters\]
is for end of a sequence of non-printable charactersTip: for memorize it you can first add
\[\]
and then put your ANSI code between them:
-\[start-ANSI-code\]
-\[end-ANSI-code\]
https://stackoverflow.com/q/5947742/28938235#28938235
https://stackoverflow.com/q/17432993/
https://stackoverflow.com/q/20697195/20698168#20698168