Bash
提示:通過命令切換刪除行
我試圖將提示更改為我自己的偏好,但是當我切換我最近輸入的命令(使用鍵箭頭)時,有時帶有提示的整行會被刪除,只有提示的一些字元和我最近輸入的命令仍然存在:
預期輸出:
bucky in [~]: cd ..
輸出:
buccd ..
‘buc’ 是提示的一部分,‘cd ..’ 是我最近輸入的命令。
我的提示:
PS1="\[\033[0;34m\u\] \[\033[0;37min\] \[\033[1;32m[\]\[\033[0;31m\w\]\[\033[1;32m]\]\[\033[0;37m:\] "
為了給你一個視覺化,這裡有一張圖片:
如果需要,我使用的是 Ubuntu 16.04
這是因為提示的列印部分
\u
in
\w
位於:
轉義方括號中。括號通常放在非列印字元周圍,以告訴 bash 不要為它們移動游標,從而正確計算提示的大小。所以現在游標沒有為列印部分正確移動。我建議您修改
.bashrc
設置提示而不是覆蓋它的部分…您可以取消註釋(刪除#
)此行:#force_color_prompt=yes
然後修改此程式碼段中的第二行:
if [ "$color_prompt" = yes ]; then PS1='${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ ' else PS1='${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
所以它說:
PS1='${debian_chroot:+($debian_chroot)}\[\033[00;34m\]\u \[\033[0;37m\]in \[\033[01;32m\][\[\033[0;31m\]\w\[\033[1;32m\]]\[\033[0;37m\]: '
或者,如果您更喜歡將覆蓋放在文件末尾:
PS1='\[\033[00;34m\]\u \[\033[0;37m\]in \[\033[01;32m\][\[\033[0;31m\]\w\[\033[1;32m\]]\[\033[0;37m\]: '
這在 Ubuntu 16.04 中實現了我認為你想要的,並且不會破壞你描述的方式(我之前在玩我的 PS1 時也經歷過!)