mel*_*isc 7 shell bash prompt bashrc
我的终端提示行有问题。当这条线太长时,它会绕在同一条线上,然后Up arrow让它看起来更糟。
我已经检查过终端提示没有正确换行,但看起来我显然关闭了所有不可打印字符的方括号。
这是我的PS1:
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot) }\[\033[01;36m\]\u@\h\[\033[00m\]\033[01;34m\]\w\033[00m\][$(type __git_ps1 >/dev/null 2>&1 && __git_ps1 "(%s)")]
Run Code Online (Sandbox Code Playgroud)
将此视为我的标准提示行
MELISC@work~/dev/bin_tools[((main))]
Run Code Online (Sandbox Code Playgroud)
我能够得到
assdasdasdasdasdadasdsadadasdaddasdadadasdadsadasdsa((main))] asdsadsadsadsadasdasdassdasdasdassdasdassdasdasdasdasdasdasdsadsad
Run Code Online (Sandbox Code Playgroud)
我已经检查过我的 .bashrc
我已经并且shopt -s checkwinsize应该自动检查列
Jde*_*eBP 14
您已经完全禁止了 Bourne Again shell 的想法,即在显示命令历史记录并允许您编辑命令行时必须删除/重写的内容。
将您的提示分成几个部分:
\[\e]0;\u@\h: \w\a\] — 非打印字符,正确封闭${debian_chroot:+($debian_chroot) } — 大概只打印字符\[\033[01;36m\] — 非打印字符,正确封闭\u@\h — 仅打印字符\[\033[00m\] — 非打印字符,正确封闭\033[01;34m\] — 非打印字符,未正确封闭,因此 Bourne Again shell 不知道它们是\w\033[00m\] — 印刷和非印刷字符的错误混合[$(type __git_ps1 >/dev/null 2>&1 && __git_ps1 "(%s)")] — 大概只打印字符我之前已经给出了这个建议,但它也是适用于这里的一般建议:
\e或\033一致,为你自己的理智。\[和\]严格匹配的非嵌套对。\[and之内\](相反,所有打印序列都不是)。(这就是为什么当我想要古怪的彩色提示时,我个人更喜欢 Z Shell 及其替代提示扩展机制。它知道诸如%F{green}不打印序列之类的事情,而不必被告知;并且它还可以计算出正确的转义序列来自terminfo,而无需将它们硬接线。)