大约 50 个字符后终端行重置
Terminal line resetting after about 50 characters
我的命令行提示符将在大约 50 个字符后重置,包括提示符。例如,如果提示如下:
user@computer$
然后我开始打字
user@computer$ blah blah blah blah blah blah
我最终会到达命令行开始重置的地步,如下所示:
blah blmputer$ blah blah blah blah blah blah
有谁知道为什么会这样,我该如何解决?最初我认为这是 iTerm 的问题,但我查看了默认的 OS X 终端并遇到了同样的问题。
编辑:深入研究后我意识到该行总是从 window 的末尾重置固定数量的字符,而不是从头开始。
通常的原因是没有引用转义序列用于在 bash
shell 中为提示着色或突出显示。如果您不这样做,bash
会将转义字符计为 "printing"。这同样适用于 zsh
(不同的引用),但 bash
恰好是默认 shell 和 OSX.
根据 xterm
手册:
bash 将“[”和“]”中的字符视为非打印字符(在屏幕上不使用宽度)。
zsh 将“%{”和“%}”中的字符视为非打印字符。
要更改的地方是您 shell 对 PS1
的定义。 Bash Prompt HOWTO 是阅读更多内容的好地方。
我的命令行提示符将在大约 50 个字符后重置,包括提示符。例如,如果提示如下:
user@computer$
然后我开始打字
user@computer$ blah blah blah blah blah blah
我最终会到达命令行开始重置的地步,如下所示:
blah blmputer$ blah blah blah blah blah blah
有谁知道为什么会这样,我该如何解决?最初我认为这是 iTerm 的问题,但我查看了默认的 OS X 终端并遇到了同样的问题。
编辑:深入研究后我意识到该行总是从 window 的末尾重置固定数量的字符,而不是从头开始。
通常的原因是没有引用转义序列用于在 bash
shell 中为提示着色或突出显示。如果您不这样做,bash
会将转义字符计为 "printing"。这同样适用于 zsh
(不同的引用),但 bash
恰好是默认 shell 和 OSX.
根据 xterm
手册:
bash 将“[”和“]”中的字符视为非打印字符(在屏幕上不使用宽度)。
zsh 将“%{”和“%}”中的字符视为非打印字符。
要更改的地方是您 shell 对 PS1
的定义。 Bash Prompt HOWTO 是阅读更多内容的好地方。