このモジュールは、バージョン 3 以降の PowerShell のコマンド ライン編集エクスペリエンスを置き換えます。それは以下を提供します:
「すぐに使える」エクスペリエンスは、PowerShell ユーザーにとって非常に馴染みのあるものであるため、新しいキー ストロークを学習する必要はありません。
PSReadLine
に関する優れたリソース:
PSReadLine
の素晴らしい入門書 (2013) を書きました。PSReadLine
でシリーズ (2014 ~ 2015 年) を執筆しました。PSReadLine
インストール、構成、好みに合わせた調整について説明しています。 PSReadLine
インストールするには複数の方法があります。
PSReadLine
の最新のプレリリース バージョンをインストールするには、 PowerShellGet
の1.6.0
以降のバージョンが必要です。
Windows PowerShell 5.1 には、プレリリース モジュールのインストールをサポートしていない古いバージョンのPowerShellGet
同梱されているため、Windows PowerShell ユーザーは、管理者特権の Windows PowerShell セッションから次のコマンドを実行して、最新のPowerShellGet
(まだインストールされていない場合) をインストールする必要があります。
Install-Module - Name PowerShellGet - Force
Exit
PowerShellGet
をインストールした後、次のコマンドを実行すると、 PSReadLine
の最新プレリリース バージョンを入手できます。
Install-Module PSReadLine - AllowPrerelease - Force
最新の安定バージョンのみを取得したい場合は、次を実行します。
Install-Module PSReadLine
[!NOTE] プレリリース バージョンには新しい機能とバグ修正が含まれていますが、新しい問題が発生する可能性もあります。
Windows 10 で Windows PowerShell を使用している場合、または PowerShell 6 以降を使用している場合は、 PSReadLine
がすでにインストールされています。最新の Windows 10 上の Windows PowerShell には、 PSReadLine
のバージョン2.0.0-beta2
があります。 PowerShell 6 以降のバージョンには、新しいプレリリース バージョンのPSReadLine
が含まれています。
PowerShell V3/V4 用の PowerShellGet のプレビュー リリースでは、GitHub からのダウンロードは非推奨になりました。 GitHub でリリースを更新するつもりはなく、ある時点でリリースを GitHub から完全に削除する可能性があります。
Windows PowerShell V5 または V5.1 バージョン、または PowerShell 6 以降のバージョンを使用している場合は、問題なく使用できるため、このセクションをスキップできます。
それ以外の場合は、プロファイルを編集してモジュールをインポートする必要があります。一般的に使用されるプロファイル ファイルは 2 つあり、それぞれで手順が若干異なります。ファイルC:Users[User]DocumentsWindowsPowerShellprofile.ps1
は、すべてのホスト ( ISE
やpowershell.exe
など) に使用されます。このファイルがすでにある場合は、次の内容を追加する必要があります。
if ( $host .Name -eq ' ConsoleHost ' )
{
Import-Module PSReadLine
}
または、ファイルC:Users[User]DocumentsWindowsPowerShellMicrosoft.PowerShell_profile.ps1
はpowershell.exe
専用です。このファイルを使用すると、以下を簡単に追加できます。
Import-Module PSReadLine
どちらの場合も、適切なファイルがまだない場合は作成できます。
以下の推奨コマンドのいずれかを実行するときは、 VSCode
ターミナルで開かれたものも含めて、 powershell.exe
、 pwsh.exe
、またはpwsh
のすべてのインスタンスを必ず終了してください。
次に、 PSReadLine
がロードされていないことを確認するには、次のようにします。
cmd.exe
、 powershell_ise.exe
、またはWin+R
ショートカット経由で、以下の推奨コマンドを実行します。bash
やzsh
など) から以下の推奨コマンドを実行します。 Windows PowerShell に同梱されているバージョンのPSReadLine
を使用している場合は、 powershell -noprofile -command "Install-Module PSReadLine -Force -SkipPublisherCheck -AllowPrerelease"
を実行する必要があります。注: このコマンドを実行する前に、PowershellGet が更新されていることを確認する必要があります。
PowerShell 6 以降のバージョンに同梱されているPSReadLine
のバージョンを使用している場合は、 <path-to-pwsh-executable> -noprofile -command "Install-Module PSReadLine -Force -SkipPublisherCheck -AllowPrerelease"
を実行する必要があります。
PowerShell ギャラリーからPSReadLine
自分でインストールした場合は、以下を実行するだけです: powershell -noprofile -command "Update-Module PSReadLine -AllowPrerelease"
または<path-to-pwsh-executable> -noprofile -command "Update-Module PSReadLine -AllowPrerelease"
使用している PowerShell のバージョンに応じて、 <path-to-pwsh-executable> -noprofile -command "Update-Module PSReadLine -AllowPrerelease"
指定します。
次のようなエラーが発生した場合:
Remove-Item : Cannot remove item
C:Users{yourName}DocumentsWindowsPowerShellModulesPSReadLineMicrosoft.PowerShell.PSReadLine.dll: Access to the path
'C:Users{yourName}DocumentsWindowsPowerShellModulesPSReadLineMicrosoft.PowerShell.PSReadLine.dll' is denied.
または次のような警告:
WARNING: The version '2.0.0' of module 'PSReadLine' is currently in use. Retry the operation after closing the applications.
次に、 PSReadLine
をロードしたすべてのプロセスを強制終了しませんでした。
使用を開始するには、モジュールをインポートするだけです。
Import-Module PSReadLine
Emacs キーバインディングを使用するには、以下を使用できます。
Set-PSReadLineOption - EditMode Emacs
現在のキー バインディングを表示するには:
Get-PSReadLineKeyHandler
多くの構成オプションがあります。 Set-PSReadLineOption
のオプションを参照してください。 PSReadLine
は、コマンドレットのヘルプとabout_PSReadLine
トピックがあります。詳細なヘルプについては、これらのトピックを参照してください。
独自のカスタム キーバインドを設定するには、コマンドレットSet-PSReadLineKeyHandler
を使用します。たとえば、歴史体験をより良くするには、次のことを試してください。
Set-PSReadLineKeyHandler - Key UpArrow - Function HistorySearchBackward
Set-PSReadLineKeyHandler - Key DownArrow - Function HistorySearchForward
これらのバインドでは、現在のコマンド ラインが空白の場合、上矢印/下矢印は PowerShell/cmd のように機能します。ただし、テキストを入力した場合は、現在入力されているテキストで始まるコマンドの履歴が検索されます。
Emacs モードを使用せずに bash スタイルの補完を有効にするには、以下を使用できます。
Set-PSReadLineKeyHandler - Key Tab - Function Complete
可能なことのより興味深い例を次に示します。
Set-PSReadLineKeyHandler - Chord ' " ' , " ' " `
- BriefDescription SmartInsertQuote `
- LongDescription " Insert paired quotes if not already on a quote " `
- ScriptBlock {
param ( $key , $arg )
$line = $null
$cursor = $null
[ Microsoft.PowerShell.PSConsoleReadLine ]::GetBufferState([ ref ] $line , [ ref ] $cursor )
if ( $line .Length -gt $cursor -and $line [ $cursor ] -eq $key .KeyChar ) {
# Just move the cursor
[ Microsoft.PowerShell.PSConsoleReadLine ]::SetCursorPosition( $cursor + 1 )
}
else {
# Insert matching quotes, move cursor to be in between the quotes
[ Microsoft.PowerShell.PSConsoleReadLine ]::Insert( " $ ( $key .KeyChar ) " * 2 )
[ Microsoft.PowerShell.PSConsoleReadLine ]::GetBufferState([ ref ] $line , [ ref ] $cursor )
[ Microsoft.PowerShell.PSConsoleReadLine ]::SetCursorPosition( $cursor - 1 )
}
}
この例では、一重引用符または二重引用符を入力すると、2 つのことが起こる可能性があります。カーソルの後に続く文字が入力された引用符でない場合は、一致する引用符のペアが挿入され、カーソルは一致する引用符の中に置かれます。カーソルの後の文字が入力された引用符である場合、カーソルは何も挿入せずに単に引用符を越えて移動します。 Resharper または他のスマート エディタを使用している場合は、このエクスペリエンスに馴染みがあるでしょう。
このように記述されたハンドラでは、Undo が正しく処理されることに注意してください。両方の引用符は 1 回の Undo で元に戻されます。
サンプル プロファイル ファイルには、チェックアウトすべき優れた例が多数含まれています。このファイルは、 PSReadLine
のインストール時に含まれます。
変更できる他の組み込み機能については、 [Microsoft.PowerShell.PSConsoleReadLine]
のパブリック メソッドを参照してください。
カスタム キー バインドで実装されていない方法でコマンド ラインを変更する場合は、次のメソッドを使用できます。
[ Microsoft.PowerShell.PSConsoleReadLine ]::GetBufferState
[ Microsoft.PowerShell.PSConsoleReadLine ]::Insert
[ Microsoft.PowerShell.PSConsoleReadLine ]::Replace
[ Microsoft.PowerShell.PSConsoleReadLine ]::SetCursorPosition
開発と貢献の方法については、貢献ガイドを参照してください。
Windows、Linux、または macOS でPSReadLine
を構築するには、以下がインストールされている必要があります。
InvokeBuild
およびplatyPS
ビルド スクリプトbuild.ps1
プロジェクトのブートストラップ、ビルド、テストに使用できます。
./build.ps1 -Bootstrap
./build.ps1 -Configuration Debug -Framework net462
./build.ps1 -Configuration Debug -Framework netcoreapp2.1
./build.ps1 -Test -Configuration Debug -Framework net462
./build.ps1 -Test -Configuration Debug -Framework netcoreapp2.1
ビルド後、生成されたアーティファクトは<your-local-repo-root>/bin/Debug
にあります。インポートされたモジュールをローカルでビルドされたモジュールに分離するには、インストールされているデフォルトの PSReadLine モジュールが自動的にロードされないように、必ずpwsh -NonInteractive -NoProfile
を実行してください。次に、 Import-Module <your-local-repo-root>/bin/Debug/PSReadLine/PSReadLine.psd1
によって、ローカルに構築された PSReadLine モジュールを読み込みます。
変更ログはここから入手できます。
PSReadLine は 2 条項 BSD ライセンスに基づいてライセンスされています。
このプロジェクトに参加する前に、当社の行動規範をご覧ください。
セキュリティの問題については、セキュリティ ポリシーをご覧ください。