Lâu nay, tôi gặp phải vấn đề dai dẳng này trên tất cả các thiết bị đầu cuối của mình, từ mặc định gnome và tilda mà cả hai tôi sử dụng cho một vòng xoáy nhanh, trong đó đầu vào của tôi sẽ ghi đè lên đầu dòng của nó khi cần bọc, và chỉ gói trên dòng tiếp theo.
Nhấn Ctrl-A để trở về đầu dòng thay vào đó sẽ đưa tôi trở lại nơi nào đó trong dòng trước dòng đầu vào đầu tiên của tôi, từ đó bất kỳ đầu vào nào trở nên rất kỳ lạ.
Bởi vì đây là một lời giải thích thực sự tồi tệ và khó hình dung, đây là cách nó diễn ra:
Có ai biết đây là gì? Nó không chỉ xảy ra trong một số trường hợp nhất định, đó là điều thường trực luôn có từ đầu đến cuối mỗi phiên trong mọi trình giả lập thiết bị đầu cuối.
Đầu ra củ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
Đầu ra của 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
test
rời khỏi thiết bị đầu cuối ở trạng thái không ổn định. Nếu đó là một kịch bản, bạn có thể đưa nó vào câu hỏi của bạn không? Điều gì xảy ra nếu bạn bắt đầu nhập mà không chạy test
trước, văn bản có bao bọc bình thường không?
stty -a
là tốt xin vui lòng?
type -a test
thay thế.
printf "%q\n" "$PS1"
cái gì? Có thể có các chuỗi thoát thô bên trong PS1 và %s
giữ nguyên chúng (có thể thay đổi màu sắc qua lại mà vẫn không được chú ý trong đầu ra). %q
trích dẫn mỗi ký tự không thể in một cách dễ đọc.
printf "%s\n" "$PS1" "$COLUMNS"
, xin vui lòng.