อินพุตเทอร์มินัลไม่ห่ออย่างถูกต้องหรือเลย


15

ในขณะนี้ฉันมีปัญหานี้ถาวรบนเทอร์มินัลทั้งหมดของฉันจากค่าเริ่มต้น gnome และ 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

ผลลัพธ์ของ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

คำตอบ:


7

เป็นไปได้ว่าเทอร์มินัลของคุณไม่รู้จักขนาดหน้าต่างอย่างถูกต้อง ฉันพบคำถามที่เกี่ยวข้องใน U&L Stackexchangeและมีคนแนะนำวิธีตรวจสอบด้านล่างว่าเกิดอะไรขึ้น:

ชนิด

shopt | grep checkwinsize

หากผลลัพธ์ไม่ใช่:

checkwinsize    on

คุณสามารถใช้ได้

shopt -s checkwinsize

เพื่อเปิดใช้งาน วิธีปิดใช้งาน:shopt -u checkwinsize


1
บางทีผมไม่ได้ทดสอบ แต่พอฉันได้แล้วcheckwinsize onฉันเคยshopt -u checkwinsizeปิดและเทอร์มินัลของฉันยังคงห่อข้อความอย่างถูกต้อง ฉันไม่แน่ใจว่าคำตอบนี้แก้ปัญหา OP ได้จริงหรือไม่
WinEunuuchs2Unix

สุกใส นี่คือการแก้ไขที่ฉันต้องการ การห่อบรรทัดคำสั่งทำงานได้อย่างสมบูรณ์แบบในขณะนี้ที่มีมากกว่า 80 อักขระ
แรนดี้

@ แรนดี้ดีใจที่ได้ยินว่ามันเหมาะกับคุณ!
Hee Jin
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.