终端输入无法正确换行,或者根本无法换行

终端输入无法正确换行,或者根本无法换行

有一段时间了,我的所有终端都存在这个持续性问题,从我使用的 gnome default 和 tilda 到我刚刚快速试用的终端,当应该换行时,我的输入会覆盖其自身行的开头,并且只在下一行换行。

按 Ctrl-A 返回到行首将不会让我返回到第一行输入之前的某处,从那里输入任何内容都会变得非常奇怪。

因为这是一个非常糟糕的解释,而且很难形象化,所以它看起来是这样的:

屏幕截图:换行测试

有人知道这是什么吗?它不仅在特定情况下发生,而且是每个终端仿真器中每个会话从开始到结束始终存在的永久现象。

输出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

输出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

答案1

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

类型

shopt | grep checkwinsize

如果输出不是:

checkwinsize    on

您可以使用

shopt -s checkwinsize

激活。 停用:shopt -u checkwinsize

相关内容