长期以来,我在Ubuntu中注意到的一件令我感到沮丧的事情是,当我在命令行输入比终端宽度更长(更宽)的命令时,它没有换行,而是返回到新行。同一行上的第1列,并开始覆盖命令行的开头。(它实际上不会覆盖实际的命令,但是在视觉上,它会覆盖显示的文本)。
很难不看就难以解释,但可以说我的终端宽20个字符(我的终端更像是120个字符-只是为了举例),我想回显英文字母。我输入的是这样的:
echo abcdefghijklmnopqrstuvwxyz
但是在按下键之前,我的终端看起来是:
pqrstuvwxyzghijklmno
当我按下回车键时,它回显
abcdefghijklmnopqrstuvwxyz
所以我知道命令已正确接收。它只是在“ o”后面加上了我的输入内容,然后从同一行开始。
如果我在只有20个字符的终端上键入此命令,将会发生以下情况:
echo abcdefghijklmno
pqrstuvwxyz
背景:我正在使用bash作为外壳,并且〜/ .bashrc中有以下行:
set -o vi
以便能够使用VI命令浏览命令行。我当前正在使用Ubuntu 10.10服务器,并使用Putty连接到服务器。
在我工作过的任何其他环境中,如果键入长命令行,当命令的长度超过终端宽度时,它将在正在处理的行下添加新行,并且当我继续键入时,我可以看到命令2条不同的线。但只要我记得使用Ubuntu,我的长命令仅占用1行。
当我返回历史记录中的先前命令时也会发生这种情况(我按Esc,然后按“ K”以返回先前的命令)-当我获得的长度大于终端宽度的先前命令时,命令行乱了,我无法告诉我命令中的位置。
我发现看到整个长命令的唯一解决方法是单击“ Esc-V”,这会在VI编辑器中打开当前命令。
我认为.bashrc文件中没有奇怪的地方。我注释掉了“ set -o vi”这一行,但仍然有问题。
我下载了一份新的Putty副本,但未对配置进行任何更改-我只是键入主机名以进行连接,但仍然存在问题,因此我认为Putty无关紧要(除非我需要进行一些配置更改)
还有其他人有这个问题吗?有人可以考虑如何解决这个问题吗?
编辑
这是我的.bashrc文件。我已经在机器之间复制了相同的配置文件,并且在$ PS1中使用了特殊字符,这些特殊字符会以某种方式将其丢弃。我现在坚持使用我的$ PS1的标准bash变量。
感谢@ændrük在.bashrc上的提示!
...结束编辑...
tput smam
/etc/skel/.bashrc
。请记住,您需要重新连接才能使更改生效,并确保保留自己的.bashrc的备份。