Khi tôi nhấn Homenếu đầu vào hiện tại của tôi đủ ngắn (giả sử <36 ký tự), nó hoạt động tốt. Tuy nhiên, khi tôi đã gõ một lệnh dài hơn và sau đó muốn quay lại từ đầu, có vẻ như nó thực hiện công việc của mình, nhưng lệnh không được hiển thị đúng nữa. Có vẻ như tôi không phải lúc đầu nhưng khoảng 10 ký tự. Mặc dù nếu tôi gõ "mù", nó hoạt động tốt, nhưng có vẻ như là một mớ hỗn độn, như thể toàn bộ đầu vào được chuyển sang bên phải, nhưng không được vẽ lại. Vì vậy, tôi gõ vào nó, nhưng "thực tế" thì không, bởi vì nơi tôi đang "xóa" là "thực sự" 10 ký tự bên phải. Theo đó, nếu tôi cố xóa lệnh, 10 ký tự đầu tiên vẫn được hiển thị, nhưng nếu tôi nhấn, Enternó chỉ hiển thị một dấu nhắc khác như thể đầu vào trước đó trống.
Tôi biết đó không phải là lời giải thích tốt nhất từ trước đến nay, nhưng vấn đề là bash nhận ra nó và cố gắng làm điều đúng, nhưng thường thất bại.
Tôi tái tạo điều này cả trong tty và trong một thiết bị đầu cuối trong một phiên X. Khi tôi nhấn Ctrl+ Vvà sau đó Hometôi thấy các chuỗi khác nhau ( ^[OH
trong X, ^[[1~
trong tty), nhưng cả hai dường như nằm trong /etc/inputrc
:
# do not bell on tab-completion
#set bell-style none
set meta-flag on
set input-meta on
set convert-meta off
set output-meta on
$if mode=emacs
# for linux console and RH/Debian xterm
"\e[1~": beginning-of-line
"\e[4~": end-of-line
"\e[5~": beginning-of-history
"\e[6~": end-of-history
"\e[7~": beginning-of-line
"\e[3~": delete-char
"\e[2~": quoted-insert
"\e[5C": forward-word
"\e[5D": backward-word
"\e\e[C": forward-word
"\e\e[D": backward-word
"\e[1;5C": forward-word
"\e[1;5D": backward-word
# for rxvt
"\e[8~": end-of-line
# for non RH/Debian xterm, can't hurt for RH/DEbian xterm
"\eOH": beginning-of-line
"\eOF": end-of-line
# for freebsd console
"\e[H": beginning-of-line
"\e[F": end-of-line
$endif
echo $TERM
hiển thị linux
trong tty và xterm
trong phiên X.
nó là
GNU bash, phiên bản 4.2.24 (2) -release (i686-pc-linux-gnu)
Bất cứ ai cũng có manh mối về điều này?
PS1="\e[0;36m[\u@\h \W]\$ \e[m"
. Có điều gì sai với nó? Nhập 36 ký tự không điền một dòng (cho đến nay). Ngoài ra, tôi không có cuộn bên trong tty :)
PS1='$ '