自从我们将 Bash 更新到 4.3.27 以来,每当我输入一个长命令时,如果它到达终端窗口的末尾,它就不会继续在新行中,而是使用开头的“>”覆盖同一行以标记该行已换行(我可以来回移动该行。我的意思是,它不只是覆盖当前行)
就像是:
假设我的终端宽度为 30 个字符
更新前
user@HOSTNAME ~$ echo "hello w orld!"
更新后
<ME ~$ echo "hello world!"
自从那次 bash 更新后,我的环境没有任何变化。$BASHOPTS
显示的值与以前相同,除了“complete_fullquote”
我怎样才能恢复“多线行为”?
问候
答案1
更改 TERM 变量。例如,如果我这样做
~$ export TERM=xterm
然后行为就很好地结束了,就像更新之前一样
和
~$ export TERM=linux
该行为是更新后的行为
这个帖子如果您有一台彩色 PS1,askubuntu 上的内容可能会对您有所帮助。
答案2
简短回答:
echo "set horizontal-scroll-mode off" >> ~/.inputrc
稍微长一点的答案:
在交互式 bash shell 中,用户输入由 READLINE 库处理(在 bash 手册页中查找以获取更多信息)。根据 bash 文档,当输入长度超过屏幕宽度时,默认行为是换行。您可以通过设置水平滚动模式多变的。
由于您没有获得默认行为,您可能需要检查:
- $INPUTRC 指向的文件,查看是否设置了水平滚动模式。值得注意的是,如果读取到空、null、on(不区分大小写)或 1,则设置 readline 变量。
- 如果你编译了 bash 版本,则使用的配置选项