多行命令输入后,PowerShell 瞬时提示会损坏输出
当前的行为
使用`可操作性Prompt ' ,并发出横跨两行的提示,接受横跨续行打字的命令后,续行会留在屏幕上。 命令输出然后被写入上面 。
将此打入多行块 :
动力壳 写作- Host "试行一" 写- Host "试行2" 写- Host "试行3"
给予:
❯写-Host"试行一".
- 写出“试验线2”
- 写好“试验线3” 试验线1t"试验线2" 试验线2t"试验线3" 试验线3
‘t'"试行""t""t"试行""t""t"试行""3""分"是续行的尾端,从未被清除. 头两道 " Write-Host " 的输出要求在这些行上降落,只覆盖部分。
单行命令是好的。 这在瞬间即时启用的情况下是正确的:
动力壳
1.3 |% {写-热"测试$ "}
测试 1
测试 2
试验 3
错误也累积. 每个之后的多行命令会将提示一行移动到屏幕上更远的地方,因此在几个命令之后,它会走回回回转并覆盖更早的输出.
• 预期行为
继续行应在命令输出写入前清除,所以多行块给出:
试验线1
试验线2
试验线3
即 " 残疾-过渡性Prompt " ,或用一行快取。
- 附加上下文/插图
缩小范围时我排除了一切
- 不是即时内容 复制了“函数全球:Invoke-Starship-TransientFunction { ' > " ,所以字符模块中的ANSI序列和Nerd字体格莱弗不参与。
- 不是"新线" 复出以所出为假相.
- 不,不,不,不,不,不,不。 从格式字符串中取出 " 美元填充 " 的复制品,因此终端宽度垫装和包装不参与。
- 不单靠`ExtraPromptLineCount'。 设置为 0 同时保持真实的两行的快感没有帮助 。
- 不是PSREADLENE或一般的外壳。 带有`Set-PSReadLine Option - ExtraPromptLineCount 0' 的“函数快取 { PS> + ” 使多行命令正确,并启用了瞬态快取 。 -不是我的档案 以即时即时即出为唯一可变.
`星舰快取'分为三部分,所以活取快取出两行:
[[ ]]
[[~ 23:35:46]]]
[[ ]]
每件破案的共同点是 活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活活 内容似乎不重要,只有行数差异。
PSReadLine为 2.4.5.
可能的解决办法
即时路径称为"PSConsoleReadLine:InvokePrompt ()" 在"PSConsoleReadLine:AcceptLine ()"之前,而输入缓冲仍然活. PSReadLine 将输入区域相对于其被接发的快高进行定位. 当瞬态快报比活态快报短时,输入区域会随差数向上移动 . . . . . . .
内容来源: starship/starship