2016-03-21 11 views
1

PowerShellはデフォルトのprompt関数を定義し、PoSh-Gitのようなものをインストールすると別のものを定義します。私自身がカスタムプロンプトを書いたので、現在の作業ディレクトリの場所に「ブックマーク」を設定したことがわかります。PowerShell: "プロンプト"関数の定義が矛盾しないようにする

私が知りたいのは、他の人と競合しないように、そのようなプロンプトを書くためのベストプラクティスは何ですか(つまり、私の現在の作業ディレクトリに私のブックマークがある場合ははGitリポジトリ)?

現在の定義をキャプチャして新しいプロンプトの冒頭で実行する方法はありますか?その両方から出力が得られますか?

答えて

0

だから、POSH-gitの実装方法を見てみ、1つのアプローチがあるように思われる:

  1. をして、必要に応じて改行せずにWrite-Promptを使用して、カスタムプロンプト機能Write-機能を確認します。
  2. ">"を返す前に、posh-git example promptに移動して、グローバルなプロンプト(または独自のもの)を作成して、単にposh-gitプロンプト(Write-VcsStatus)を呼び出して独自のカスタム関数を呼び出します。

要するに、単に一つのグローバルpromptオーバーライドから呼び出すことができる機能でWrite-Hostを使用して、オーダーメイドのプロンプトデータを書き込み、複数のプロファイル機能を持​​っていません。

1

Get-Help About_Promptsあなたがそうのような現在のプロンプトのためのスクリプトブロックを取得することができますアドバイス:もちろん

(Get-Command Prompt).ScriptBlock 

あなたが無限ループを作成しないように、あなたにこれを固執ので、もしあなたが関数内からこれを行うことはできませんプロファイルまたはモジュールまたは何か:

$promptscript = (Get-Command Prompt).ScriptBlock 

Function Prompt 
{ 
    Write-Output ("* " + (Invoke-Command -Script $promptscript)) 
} 

あなたは現在表示しているものは何でもプロンプトの前にアスタリスクを得るでしょう、しかし、これが利用可能であること、既存のプロンプト機能ののScriptBlockプロパティに依存している - それは(ない場合などに詰めDLL)関数を別の名前にコピーできない限り、あなたは運がうまくいかないかもしれません(DLLでこれを行うことも可能であると仮定します...)

注:上記のものはすべて読み込まれた後に呼び出す必要があります。あなたのプロファイルに関連するモジュールを手作業でロードし、プロンプトを設定するか、モジュールをロードする関数を作成してからプロンプトを設定する価値があります。

関連する問題