在 bash 中输入的长命令会覆盖同一行

在 bash 中输入的长命令会覆盖同一行

自从我们将 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 版本,则使用的配置选项

相关内容