GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

b-ryan

powerline-shell – 美しくて便利なシェルのプロンプト

投稿日:

美しくて便利なシェルのプロンプト

シェル用のPowerlineスタイルのプロンプト

Bash、ZSH、Fish、およびtcshに対するプロンプトのような電力線

  • git / svn / hg / fossilブランチについてのいくつかの重要な詳細を示します(下記参照)
  • 最後のコマンドがエラーコードで終了した場合は、色を変更します。
  • あまりにも深いディレクトリツリーの場合は、表示されるパスを省略記号で短縮します
  • 現在のPythonのvirtualenv環境を表示します。
  • カスタマイズして拡張するのは簡単です。 詳細は以下を参照してください。

DocTocで生成される 目次

バージョン管理

Powerlineシェルでサポートされているバージョンコントロールシステムはすべて、レポの状態をすばやく確認できます。

  • ブランチが汚れていると、現在のブランチが表示され、背景色が変わります。
  • ローカルブランチがリモートと異なる場合、git pushまたはpullが保留中であるかどうかを示すまたはとともに、コミット数の違いが示されます。

ファイルが変更された場合、または競合が発生した場合、状況は次の記号で要約されます。

  • – ファイルが変更されました(gitではコミットのためにステージングされていません)
  • – ファイルはコミットのためにステージングされ(git)、追跡のために追加されます
  • – ファイルに競合があります
  • ? – ファイルがトラッキングされていない

複数のファイルが一致する場合、これらのそれぞれに番号が表示されます。

セグメントは、使用中のバージョン管理システムを表すシンボルで始まります。 そのシンボルを表示するには、設定ファイルに変数vcsがあり、オプションshow_symboltrue設定されている必要があります( セグメント設定を参照)。

セットアップ

このスクリプトは、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のドキュメントを参照してください。
  • batterybatteryパーセンテージとバッテリーの充電中のアイコンを表示します。
  • bzr – 現在のBazaarレポに関する詳細。
  • cwd – 現在の作業ディレクトリを表示します。 いくつかのオプションについては、 セグメント設定を参照してください。
  • exit_code – 前のコマンドがゼロ以外のステータスで終了すると、終了ステータスの値が赤で表示されます。
  • fossil – 現在のFossilレポに関する詳細。
  • git – 現在のGitリポジトリの詳細。
  • git_stash – 現在のGitリポジトリのstashの数。
  • hg – 現在のMercurialレポについての詳細。
  • hostname – 現在のマシンのホスト名。
  • jobs – 現在実行中のバックグラウンドジョブの数。
  • newline – プロンプトに改行を挿入します。
  • node_versionnode --version
  • npm_versionnpm --version
  • php_version – マシン上のphpのバージョン。
  • rbenvrbenv local
  • read_only – 現在のディレクトリが読み取り専用の場合、ロックアイコンを表示します。
  • rootrootとしてログインしている場合は# 、それ以外の場合は$ます。
  • ruby_versionruby --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_symboltrue場合、バージョン管理システムセグメントは、現在のディレクトリで使用されている特定のバージョン管理システムを表すシンボルで始まります。

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.txtrequirements-dev.txtインストールした後でnosetestsコマンドを実行することもできます。

トラブルシューティング

FAQを参照してください 引き続き問題が発生した場合は、問題を開いてください。







-b-ryan
-, , , , , , , ,

執筆者:

関連記事

関連記事はありませんでした