当我粘贴一个长字符串(即,字符数超过终端窗口的宽度)时,终端不会自动滚动并将它们放在多行中。
相反,它基本上包含在同一条线上。换句话说,它会打印到当前行的结尾,然后从相同行的开头开始打印现有字符...
这是截图。请注意该行开头的字符“789abc ...”。
我在终端2.3的10.8.3上。 $ TERM是xterm-256color。
一位同事拥有完全相同的机器设置(虽然不同的终端颜色和可能的其他配置),他可以让它滚动。
有什么想法吗?
谢谢!
答案 0 :(得分:6)
听起来您没有正确标记PS1提示字符串的非打印部分。非打印部分(例如颜色更改转义序列) - 以及仅非打印部分 - 需要使用\[ ... \]
标记,以便shell可以告诉它们不占用空间屏幕(因此可以告诉在哪里换行)。例如,我的提示字符串是\[\e[0;32m\]\h\[\e[m\]:\W \[\e[0;34m\]\u\[\e[m\]$
,它解析为:
\[\e[0;32m\]
- 将颜色更改为绿色类型(非打印,因此它包含在\[ ... \]
中)\h
- 主机名(打印)\[\e[m\]
- 正常打印(无颜色)(非打印,因此包裹):\W
- 当前目录(和分隔符)(打印)\[\e[0;34m\]
- 更改为蓝色类型(非打印)\u
- 主机名(打印)\[\e[m\]
- 正常类型(非打印)$
- 实际命令之前的最终分隔符