当我打Home,如果我的电流输入足够短(比如<36个字符),它工作正常。但是,当我键入一个较长的命令,然后又想回到开头时,它似乎已经完成了工作,但是该命令不再正确显示。好像我不是刚开始,但要离开大约10个字符。尽管如果我键入“ blindly”,它可以正常工作,但看起来像是一团糟,好像整个输入都移到了右边,但没有重绘。因此,我键入了它,但实际上没有键入,因为我要“擦除”的位置在右边“实际上”是10个字符。因此,如果我尝试擦除该命令,则仍显示前10个字符,但是如果我单击Enter它,则仅显示另一个提示,就好像先前的输入为空。
我知道这不是有史以来最好的解释,但关键是bash能够识别它并尝试做正确的事情,但经常失败。
我在tty和X会话的终端中都重现了这一点。当我按下Ctrl+时V,Home我看到了不同的序列(^[OH
在X中,^[[1~
在tty中),但是两者似乎都在我的体内/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
显示linux
在TTY和xterm
在X会话。
它的
GNU bash版本4.2.24(2)-发行版(i686-pc-linux-gnu)
有人对此有线索吗?
@Mikel我不知道您的想法,但是您很可能走在正确的轨道上。当我使用简约提示时,似乎没有发生。与默认设置相比,我使用的修改了一点
—
Lev Levitsky'3者
PS1="\e[0;36m[\u@\h \W]\$ \e[m"
。这有什么问题吗?到目前为止,键入36个字符不会占一行。另外,我在tty中没有侧面滚动:)
@Mikel我遵循jw013的建议并调整了提示,似乎可以解决它。也许您可以详细说明问题出在什么地方,以便我能以一些代表的身分来回报您:)
—
Lev Levitsky 2012年
PS1='$ '