终端输入没有正确换行,或者根本没有换行

leo*_*eod 15 command-line bash

一段时间以来,我在所有终端上都遇到了这个持续存在的问题,从我都使用的 gnome default 和 tilda 到我刚刚快速旋转的那些,我的输入将在应该时覆盖它自己的行的开头换行,并且只在下一行换行。

按 Ctrl-A 返回到该行的开头,而是将我返回到我的第一个输入行之前的行中某个位置,从该行中输入更多信息会变得非常奇怪。

因为这是一个非常糟糕的解释并且难以想象,所以它的外观如下:

Screencap:换行测试

有谁知道这是什么?它不仅在某些情况下发生,而且是一个永久性的事情,从每个终端模拟器中的每个会话的开始到结束始终存在。

的输出printf "%s\n" "$PS1" "$COLUMNS"

leod:~$ printf "%s\n" "$PS1" "$COLUMNS"
\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ 
80
Run Code Online (Sandbox Code Playgroud)

的输出stty -a

leod:~$ stty -a
speed 38400 baud; rows 11; columns 140; line = 0;
intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; eol2 = <undef>; swtch = <undef>; start = ^Q; stop = ^S; susp = ^Z;
rprnt = ^R; werase = ^W; lnext = ^V; discard = ^O; min = 1; time = 0;
-parenb -parodd -cmspar cs8 -hupcl -cstopb cread -clocal -crtscts
-ignbrk -brkint -ignpar -parmrk -inpck -istrip -inlcr -igncr icrnl ixon -ixoff -iuclc -ixany -imaxbel -iutf8
opost -olcuc -ocrnl onlcr -onocr -onlret -ofill -ofdel nl0 cr0 tab0 bs0 vt0 ff0
isig icanon iexten echo echoe echok -echonl -noflsh -xcase -tostop -echoprt echoctl echoke -flusho -extproc
Run Code Online (Sandbox Code Playgroud)

Hee*_*Jin 8

您的终端可能无法正确识别窗口大小。我在 U&L Stackexchange 中发现了一个相关问题,有人建议使用以下方法来检查这是否是正在发生的事情:

类型

shopt | grep checkwinsize
Run Code Online (Sandbox Code Playgroud)

如果输出不是:

checkwinsize    on
Run Code Online (Sandbox Code Playgroud)

您可以使用

shopt -s checkwinsize
Run Code Online (Sandbox Code Playgroud)

激活。停用:shopt -u checkwinsize

  • 也许我没有进行足够的测试,但我的“checkwinsize”已经“on”了。我使用“shopt -u checkwinsize”将其关闭,我的终端仍然正确包装文本。我不确定这个答案是否真正解决了OP问题。 (2认同)