Bash 提示没有正确换行
Bash prompt does not wrap text properly
我最近为我的 bash 提示添加了一些颜色,现在当我键入命令时,文本不能正确换行。
这是一个例子:
MacBook-Pro:~ williamgiles$
long commandwilliamgiles$ this is a really long command,this is a really
我原来的PS1:
\h:\W \u$
我的新颜色:
\e[0;35m\h:\W \u$ \e[m
您需要将 color-changing 序列标记为不影响提示长度的内容 on-screen。
PS1='\[\e[0;35m\]\h:\W \u$ \[\e[m\]'
bash
已经知道要考虑\h
、\W
和\u
的扩展;它不知道 \e[0;35m
不仅仅是终端将在屏幕上显示的 7 个字符。
添加到@chepner 的回答中,我个人在 .inputrc
中使用 </code> 和 <code>
这是一个例子:
set vi-ins-mode-string \e[38;5;015m╰─\e[0m\e[38;2;191;254;33m(ins)⫸\e[0m\e[5 q\e]12;rgb:bf/fe/21\e\
set vi-cmd-mode-string \e[38;5;015m╰─\e[0m\e[38;2;191;121;33m(cmd)⫸\e[0m\e[2 q\e]12;rgb:bf/79/21\e\
</code> 表示 zero-length 部分的开始,<code>
表示结束。
([=16=]1
和 [=17=]2
也有效)
不久前我写了一篇关于这个话题的blog post。您可能会发现它很有趣。
我的 shell 最终看起来像什么(顶部部分可以通过使用 Oh-My-Posh:
我最近为我的 bash 提示添加了一些颜色,现在当我键入命令时,文本不能正确换行。
这是一个例子:
MacBook-Pro:~ williamgiles$
long commandwilliamgiles$ this is a really long command,this is a really
我原来的PS1:
\h:\W \u$
我的新颜色:
\e[0;35m\h:\W \u$ \e[m
您需要将 color-changing 序列标记为不影响提示长度的内容 on-screen。
PS1='\[\e[0;35m\]\h:\W \u$ \[\e[m\]'
bash
已经知道要考虑\h
、\W
和\u
的扩展;它不知道 \e[0;35m
不仅仅是终端将在屏幕上显示的 7 个字符。
添加到@chepner 的回答中,我个人在 .inputrc
中使用 </code> 和 <code>
这是一个例子:
set vi-ins-mode-string \e[38;5;015m╰─\e[0m\e[38;2;191;254;33m(ins)⫸\e[0m\e[5 q\e]12;rgb:bf/fe/21\e\
set vi-cmd-mode-string \e[38;5;015m╰─\e[0m\e[38;2;191;121;33m(cmd)⫸\e[0m\e[2 q\e]12;rgb:bf/79/21\e\
</code> 表示 zero-length 部分的开始,<code>
表示结束。
([=16=]1
和 [=17=]2
也有效)
不久前我写了一篇关于这个话题的blog post。您可能会发现它很有趣。
我的 shell 最终看起来像什么(顶部部分可以通过使用 Oh-My-Posh: