小编Bri*_*anH的帖子

如何让长命令行换行到下一行?

我在 Ubuntu 中注意到很长一段时间让我感到沮丧的事情是,当我在命令行中输入一个比终端宽度更长(更宽)的命令时,而不是换行到新行,它会回到同一行的第 1 列并开始覆盖我的命令行的开头。(它实际上并没有覆盖实际的命令,但在视觉上,它覆盖了显示的文本)。

没有看到它很难解释,但假设我的终端有 20 个字符宽(我的更像是 120 个字符 - 但为了举个例子),我想呼应英文字母。我输入的是这样的:

echo abcdefghijklmnopqrstuvwxyz
Run Code Online (Sandbox Code Playgroud)

但是在我按下键之前我的终端是这样的:

pqrstuvwxyzghijklmno
Run Code Online (Sandbox Code Playgroud)

当我按回车键时,它会回响

abcdefghijklmnopqrstuvwxyz
Run Code Online (Sandbox Code Playgroud)

所以我知道命令已正确接收。它只是在“o”之后包装了我的打字并在同一行重新开始。

如果我在只有 20 个字符宽的终端上输入这个命令,我希望会发生什么:

echo abcdefghijklmno
pqrstuvwxyz
Run Code Online (Sandbox Code Playgroud)

背景:我使用 bash 作为我的 shell,我的 ~/.bashrc 中有这一行:

set -o vi
Run Code Online (Sandbox Code Playgroud)

能够使用 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 的提示! …

command-line bash

122
推荐指数
5
解决办法
16万
查看次数

标签 统计

bash ×1

command-line ×1