Github: https://github.com/b-ryan/powerline-shell
シェル用のPowerlineスタイルのプロンプト
Bash、ZSH、Fish、およびtcshに対するプロンプトのような電力線 :
- git / svn / hg / fossilブランチについてのいくつかの重要な詳細を示します(下記参照)
- 最後のコマンドがエラーコードで終了した場合は、色を変更します。
- あまりにも深いディレクトリツリーの場合は、表示されるパスを省略記号で短縮します
- 現在のPythonのvirtualenv環境を表示します。
- カスタマイズして拡張するのは簡単です。 詳細は以下を参照してください。
DocTocで生成される 目次
バージョン管理
Powerlineシェルでサポートされているバージョンコントロールシステムはすべて、レポの状態をすばやく確認できます。
- ブランチが汚れていると、現在のブランチが表示され、背景色が変わります。
- ローカルブランチがリモートと異なる場合、git pushまたはpullが保留中であるかどうかを示す
⇡
または⇣
とともに、コミット数の違いが示されます。
ファイルが変更された場合、または競合が発生した場合、状況は次の記号で要約されます。
-
✎
– ファイルが変更されました(gitではコミットのためにステージングされていません) -
✔
– ファイルはコミットのためにステージングされ(git)、追跡のために追加されます -
✼
– ファイルに競合があります -
?
– ファイルがトラッキングされていない
複数のファイルが一致する場合、これらのそれぞれに番号が表示されます。
セグメントは、使用中のバージョン管理システムを表すシンボルで始まります。 そのシンボルを表示するには、設定ファイルに変数vcs
があり、オプションshow_symbol
がtrue
設定されている必要があります( セグメント設定を参照)。
セットアップ
このスクリプトは、ANSIカラーコードを使用して端末に色を表示します。 これらは携帯ではないことが知られているので、すぐに使えないかもしれませんが、$ TERMをxterm-256color
設定してみてください。
-
端末に使用するフォントにパッチを適用してください: powerline-fontsを参照してください。
- あなたの端末で作業用フォントを手に入れようと苦労しているなら、 “compatible”モードを使うことができます。
- 古いパッチを適用したフォントを使用している場合は、古い記号を使用する必要があります。 基本的には、 このコミットをコピーしてください。
-
pipを使ってインストールする:
pip install powerline-shell
( --user
オプションを使ってあなたのユーザのためにインストールすることもできますが、正しく動作させるためにはPATH
を操作する必要があります ) 。
- または、gitリポジトリからインストールします:
git clone https://github.com/b-ryan/powerline-shell
cd powerline-shell
python setup.py install
- 以下のシェルの手順に従って、シェルプロンプトを設定します。
バッシュ
.bashrc
(またはMacの場合は.profile
)に以下を追加します。
function _update_ps1() {
PS1=$(powerline-shell $?)
}
if [[ $TERM != linux && ! $PROMPT_COMMAND =~ _update_ps1 ]]; then
PROMPT_COMMAND="_update_ps1; $PROMPT_COMMAND"
fi
ZSH
.zshrc
以下を追加してください:
function powerline_precmd() {
PS1="$(powerline-shell --shell zsh $?)"
}
function install_powerline_precmd() {
for s in "${precmd_functions[@]}"; do
if [ "$s" = "powerline_precmd" ]; then
return
fi
done
precmd_functions+=(powerline_precmd)
}
if [ "$TERM" != "linux" ]; then
install_powerline_precmd
fi
魚
〜/ .config / fish / config.fishのfish_promptを再定義する:
function fish_prompt
powerline-shell --shell bare $status
end
tcsh
.tcshrc
以下を追加してください:
alias precmd 'set prompt="`powerline-shell --shell tcsh $?`"'
カスタマイズ
設定ファイル
Powerline-shellは、設定ファイルを使用してカスタマイズできます。 このファイルは~/.config/powerline-shell/config.json
ます。 この場所でデフォルトの設定を生成するには、次のコマンドを使用します。
powerline-shell --generate-config > ~/.powerline-shell.json
(例として、私の設定ファイルはここにあります: ここにあります )
セグメントの追加、削除、再配置
設定ファイルを生成したら、シェルのビルディングブロックである “セグメント”の追加または削除を開始できます。 使用可能なセグメントのリストは次のとおりです。
-
aws_profile
– 使用中のAWSプロファイルを表示します。 AWSのドキュメントを参照してください。 -
battery
–battery
パーセンテージとバッテリーの充電中のアイコンを表示します。 -
bzr
– 現在のBazaarレポに関する詳細。 -
cwd
– 現在の作業ディレクトリを表示します。 いくつかのオプションについては、 セグメント設定を参照してください。 -
exit_code
– 前のコマンドがゼロ以外のステータスで終了すると、終了ステータスの値が赤で表示されます。 -
fossil
– 現在のFossilレポに関する詳細。 -
git
– 現在のGitリポジトリの詳細。 -
git_stash
– 現在のGitリポジトリのstashの数。 -
hg
– 現在のMercurialレポについての詳細。 -
hostname
– 現在のマシンのホスト名。 -
jobs
– 現在実行中のバックグラウンドジョブの数。 -
newline
– プロンプトに改行を挿入します。 -
node_version
–node --version
-
npm_version
–npm --version
-
php_version
– マシン上のphpのバージョン。 -
rbenv
–rbenv local
-
read_only
– 現在のディレクトリが読み取り専用の場合、ロックアイコンを表示します。 -
root
–root
としてログインしている場合は#
、それ以外の場合は$
ます。 -
ruby_version
–ruby --version
-
set_term_title
– できれば、便利な情報を含むように端末のタイトルを設定します。 -
ssh
– SSH経由でログインすると、ネットワークアイコンが表示されます。 -
svn
– 現在のSVNリポジトリの詳細。 -
time
– 現在の時刻を表示します。 -
uptime
– 現在のマシンのuptime
。 -
username
– ログインしているユーザの名前。 -
virtual_env
– 現在の仮想envまたはconda envの名前を表示します。
セグメントセパレータ
デフォルトでは、各セグメントを区切るためにユニコード文字(>記号に似ています)が使用されます。 これは、設定ファイルの “mode”オプションを変更することで変更できます。 使用可能なモードは次のとおりです。
-
patched
– デフォルト。 -
compatible
– 選択したフォントを使用してすでに使用可能な文字を使用しようとします。 -
flat
– セグメント間にセパレータは使用されず、各セグメントに長方形の外観が与えられます(またスペースも節約されます)。
テーマ
powerline_shell/themes
ディレクトリには、基本的にセグメントによって使用される色の値であるプロンプトのテーマが格納されています。 default.py
はスタンドアローンで使用できるデフォルトのテーマを定義し、他のすべてのテーマはいずれのセグメントの色も見逃していればそれに戻ります。
カスタムテーマを作成する場合は、 基本テーマのように既存のテーマの1つをコピーします。 ~/.powerline-shell.json
を更新し、 "theme"
をファイルのパスに設定します。 たとえば、設定には次のようなものがあります。
"theme": "~/mythemes/my-great-theme.py"
その後、好みに合わせてカラーコードを変更することができます。 テーマの色は、 Xterm-256カラーコードを使用して指定します 。
色の組み合わせをテストするためのスクリプトは、 colortest.py
で提供されていcolortest.py
。 表示される色は端末によって異なる場合があります。 テーマを設計するときは、特に既定の設定で複数の端末でテーマをテストしてください。
セグメント構成
一部のセグメントは追加構成をサポートします。 セグメントのオプションは、セグメント自体の名前の下にネストされます。 たとえば、 cwd
セグメントのすべてのオプションは、 ~/.powerline-shell.json
ように設定されます。
{
"segments": [...],
"cwd": {
options go here
}
"theme": "theme-name",
"vcs": {
options go here
}
}
cwd
セグメントのオプションは次のcwd
です。
-
mode
:単純なら、単純なテキストを使ってcwdを表示します。dironly
場合、現在のディレクトリだけが表示されます。 それ以外の場合は、cwdを個々のディレクトリに展開します。 -
max_depth
:パスに表示する最大ディレクトリ数。 -
max_dir_size
:パス内の各ディレクトリーに表示される最大文字数。 -
full_cwd
:trueの場合、max_dir_size
を使用すると、最後のディレクトリは短縮されません。
hostname
セグメントは1つのオプションを提供します:
-
colorize
:trueの場合、ホスト名は自身のハッシュに基づいてカラー化されます。
vcs
セグメントには1つのオプションがあります。
-
show_symbol
:true
場合、バージョン管理システムセグメントは、現在のディレクトリで使用されている特定のバージョン管理システムを表すシンボルで始まります。
battery
セグメントのオプションは次のとおりです。
-
always_show_percentage
:trueの場合、ACで完全に充電されたときのパーセンテージを表示します。 -
low_threshold
:バッテリlow_threshold
インジケータの色のしきい値パーセンテージ。
新しいタイプのセグメントの貢献
powerline_shell/segments
ディレクトリには、powerline_shell_base.pyという1つのファイルにそのまま注入されるpythonスクリプトが含まれています。 各セグメントスクリプトは、1つまたは複数のセグメントをプロンプトに挿入する関数を定義します。 新しいセグメントを追加する場合は、セグメントディレクトリに新しいファイルを作成するだけです。
スクリプトで他のスクリプトと競合する可能性のある新しいグローバルが導入されていないことを確認してください。 あなたのスクリプトは静かに失敗し、どんなシナリオでもすばやく実行する必要があります。
作成した新しいセグメントごとにthemes/default.py
新しいデフォルトカラーが導入されていることを確認してください。 このテーマでまずセグメントをテストしてください。
あなたはできるだけあなたのセグメントのテストを追加する必要があります。 ユニットテストと統合テストはどちらも歓迎します。 test.sh
スクリプトを実行してテストを実行します。 依存関係と環境を管理するためにdocker
を使用します。 あるいは、 requirements-dev.txt
にrequirements-dev.txt
インストールした後でnosetests
コマンドを実行することもできます。