ベスパリブ

プログラミングを主とした日記・備忘録です。ベスパ持ってないです。

PowerShellのエラー「System.ArgumentOutOfRangeException: 値には 0 以上で、コンソールの次元のバッファー サイズ しなければなりません。」

解決方法

PowerShellの画面をリサイズすれば直る

現象

VSCodePowerShellを使っていて、キーの「.」を打つと以下のようなエラーが出た。

PS C:\Users\takey\Desktop\myspace\workspace\Algorithm>
問題が発生しました。このバグを以下の詳細と共に報告してください。
GitHub で報告: https://github.com/lzybkr/PSReadLine/issues/new
-----------------------------------------------------------------------
直前 96 個のキー:
 P r i m Tab s e g m e n t Tab LeftArrow LeftArrow LeftArrow LeftArrow LeftArrow LeftArow LeftArrow LeftArrow LeftArrow LeftArrow LeftArrow LeftArrow LeftArrow LeftArrow Leftrrow LeftArrow LeftArrow LeftArrow LeftArrow LeftArrow LeftArrow LeftArrow LeftArrow LetArrow LeftArrow LeftArrow LeftArrow LeftArrow LeftArrow LeftArrow LeftArrow LeftArrow eftArrow LeftArrow g + + Space Enter
 . . . . Enter
 . . Backspace Backspace Enter
 . Backspace Backspace g + + Space P r i m e Tab s e g m e n t Tab Enter
 . / a Enter
 Enter
 . Backspace .

例外:
System.ArgumentOutOfRangeException: 値には 0 以上で、コンソールの次元のバッファー サイズ
しなければなりません。
パラメーター名:left
実際の値は -2 です。
   場所 System.Console.SetCursorPosition(Int32 left, Int32 top)
   場所 Microsoft.PowerShell.Internal.VirtualTerminal.set_CursorLeft(Int32 value)
   場所 Microsoft.PowerShell.PSConsoleReadLine.ReallyRender(RenderData renderData, Striolor)
   場所 Microsoft.PowerShell.PSConsoleReadLine.ForceRender()
   場所 Microsoft.PowerShell.PSConsoleReadLine.Insert(Char c)
   場所 Microsoft.PowerShell.PSConsoleReadLine.SelfInsert(Nullable`1 key, Object arg)
   場所 Microsoft.PowerShell.PSConsoleReadLine.ProcessOneKey(ConsoleKeyInfo key, DictioatchTable, Boolean ignoreIfNoAction, Object arg)
   場所 Microsoft.PowerShell.PSConsoleReadLine.InputLoop()
   場所 Microsoft.PowerShell.PSConsoleReadLine.ReadLine(Runspace runspace, EngineIntrinIntrinsics)
-----------------------------------------------------------------------

エラーの発動条件が意味不明だったのですが、なんかここのissueを見ると、

This issue happens only when you resize the window after UpArrow and before Escape.

とありましたので、試しに画面サイズを変更すると現象が起こらなくなりました。なんか入力カーソルが画面右ぎりぎりの状態で「.」や「,」を打つとエラーが起きるらしい。

f:id:takeg:20201108205724p:plain
このくらいの状態で「.」や「,」と打つとエラーが出る

f:id:takeg:20201108203318p:plain
こんなエラーが出る

f:id:takeg:20201108203358p:plain
画面サイズを大きくするとエラーは起こらなくなった

追記

Powershellのバージョンをアップデートすれば直るらしい