WSL:“tab”字符占据整整一行

WSL:“tab”字符占据整整一行

每当任何 WSL 程序将“\t”输出到 stdout 时,“Bash for windows”应用程序的行为都非常奇怪。制表符后的第一个字符被绘制在最后当前行的位置。如果之后还有更多内容,它们将换行到下一行。我不知道这是怎么发生的,也不知道什么时候发生的,因为我已经很久没有使用 WSL 了。下面是一个例子:

在此处输入图片描述

  • 在你问之前,是的,它适用于任何我从终端调用的程序。
  • 我已将所有内容更新至最新版本,但问题仍未得到解决。
  • 如果可能的话,我宁愿不重新安装整个系统。至少我想保留 Linux 文件系统中的文件。

那么这是由什么原因造成的?我该如何解决?

编辑:

  • 这里没有特殊的预览版本,只有默认更新设置的普通 Windows 10。
  • 版本 1903,内部版本 18362.476。上次更新为 KB4524570。
  • 发行版是 Ubuntu。我记得当我安装它时,Ubuntu 是唯一可用的。不过可能是错的。

答案1

这似乎是标准的 Bash 终端功能,而不仅仅是 WSL。您可以使用命令设置 Bash 控制台中使用的制表符宽度tabs 。您可以使用tabs -N将制表符间隔设置为 N 个字符,tabs -0(重置制表符)似乎重现了您描述的行为,并将tabs -8制表符设置为标准间隔(8 个字符)。您可以tabs --help在提示符下使用以查看选项。如果您使用echo带有-e选项的命令,您可以看到效果。

tabs -0制表符间隔设置为当前控制台宽度,但与我的旧版 WSL Ubuntu 有一点不同。我已尝试使用 WSL、Raspberry Pi 上的 LXterminal 和 Debian 9 文本登录。

在 WSL 安装的旧版(非 WSL2)标准 WSL 终端上,tabs -0似乎将控制台中的选项卡宽度设置为一些奇怪的(非常宽的)值,通常大于当前终端窗口(大约 231 个字符),但如果我打开 Windows CMD 控制台,并通过键入来调出 WSL bash,或者wsl则行为如下所示。

在新 Windows 终端(预览版)、Raspbian 和 Debian 上,它遵循当前窗口大小。

Raspberry Pi LX终端

在此处输入图片描述

新的 Windows 终端预览版(旧版 WSL Ubuntu)

在此处输入图片描述

Debian 9 文本控制台:

在此处输入图片描述

相关内容