Windows Terminal中PowerShell执行ls命令显示异常的原因及修复方案咨询
Windows Terminal中PowerShell执行ls命令显示异常的原因及修复方案咨询
嘿,这个问题我之前也碰到过,其实核心原因和PowerShell的自动列布局逻辑有关,咱们慢慢捋清楚哈!
为什么会出现这种情况?
- PowerShell里的
ls其实是Get-ChildItem的别名,它默认会根据当前终端窗口的宽度自动调整文件列表的列数和每列宽度。当窗口处于标准大小(宽度较窄)时,系统没办法给每列分配足够的显示空间,就会导致内容换行重叠、排版混乱;而窗口最大化后宽度足够,列宽分配合理,自然就显示正常了。 - 另外,如果你的终端字体偏宽,窄窗口下更容易出现内容挤在一起的情况,这也会加重显示混乱的问题。
可以试试这些修复方法:
- 强制用列表模式输出:不用默认的宽表布局,改用逐行显示的列表格式。执行命令:
Get-ChildItem | Format-List,或者更简洁的ls -Format List,这样每个文件/文件夹的信息会单独占一行,不管窗口宽窄都不会乱。 - 固定输出列宽:修改PowerShell的配置文件,给
Get-ChildItem设置固定的输出宽度:- 先检查配置文件是否存在:执行
Test-Path $PROFILE,如果返回False,就执行New-Item -Path $PROFILE -ItemType File -Force创建配置文件。 - 打开配置文件:
notepad $PROFILE,添加一行代码,比如$PSDefaultParameterValues['Get-ChildItem:Width'] = 120(这里的120可以根据你常用的窗口宽度调整),保存后重启PowerShell就生效了。
- 先检查配置文件是否存在:执行
- 调整终端设置:打开Windows Terminal的设置,找到PowerShell的配置项:
- 换成更紧凑的字体(比如Consolas、Fira Code等),减少单字符占用的宽度;
- 调整默认窗口的宽度,设置一个足够容纳列布局的尺寸,这样打开终端时就不会挤了。
- 指定固定列数显示:执行
Get-ChildItem | Format-Wide -Column 3(这里的3可以根据需要改成其他数字),强制用固定列数显示文件列表,避免自动调整带来的混乱。
备注:内容来源于stack exchange,提问作者John James




