终端输入未正确包装,或根本没有包装


15

一段时间以来,我在所有终端上都遇到了这个持续存在的问题,从我俩都使用过的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

3
请添加的输出printf "%s\n" "$PS1" "$COLUMNS"
muru

可能是您的程序test使终端处于不稳定状态。如果这是一个脚本,您可以在问题中包含它吗?如果您没有test先运行就开始输入,文本会自动换行吗?
WinEunuuchs2Unix

1
我们也可以看到输出stty -a吗?
钢铁司机

1
@ WinEunuuchs2Unix错误测试(双关语意)。试试吧type -a test
muru

1
输出是printf "%q\n" "$PS1"什么?PS1内可能有原始的转义序列,并%s使其完整无损(这可能会例如来回更改颜色,而该颜色在输出中不会被注意到)。%q用可读的方式引用每个不可打印的字符。
egmont

Answers:


7

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

类型

shopt | grep checkwinsize

如果输出不是:

checkwinsize    on

您可以使用

shopt -s checkwinsize

激活。停用:shopt -u checkwinsize


1
也许我考试不够,但我checkwinsize已经考试了on。我曾经shopt -u checkwinsize关闭它,但我的终端仍然可以正确包装文本。我不确定这个答案是否真的可以解决OP问题。
WinEunuuchs2Unix

辉煌。这是我需要的解决方法。命令行换行现在可以完美地使用超过80个字符。
兰迪

@Randy Glad听说它对您有用!
Hee Jin
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.