cucumber flesh

Rを中心としたデータ分析・統計解析らへんの話題をしていくだけ

ハドリーに倣い、コンソールにブランチ名を表示&フォントを変える

何事も形から入るタイプの @u_ribo です。ネットストーキングに定評があります。

皆さんには憧れの人はいますか? 憧れの人が使っているものは、なぜか格好良く見えたり、自分も興味を抱くようになった経験はないでしょうか。

さて、憧れの人であるHadleyが登壇していた動画をYouTubeで見ていると気になる箇所がありました。この辺りです(次の動画の再生箇所)。

...プロンプト 1 にGitブランチ名を表示させるの格好いい

見た目重視の私は、憧れの人Hadley WickhamやRStudioチームが使っているものをすぐに真似したくなる癖があります。

調べてみると、どうもHadleyは自作関数でこの機能を実現可能にしていたようです。 そしてこの機能を含め、コンソールにさまざまな情報を表示させるのはpromptパッケージを使うと簡単に導入できることがわかりました。

github.com

MaraさんもTwitterで紹介されていました。

雰囲気はこのつぶやきのGif画像を見たらわかると思います。そんなわけで今回は実際に promptパッケージを使ってコンソールをカスタマイズする話です。

動機

コンソールに作業中のGitブランチ名を表示させたい理由は単に見た目が格好いいから、だけではありません。

時々、今どのブランチで作業しているのだっけ?となります。また、うっかりコミットするブランチを間違えたりもします。 そんな無駄やリスクを避けるためにブランチ名が見やすい位置に表示されているととても便利なわけです。

RStudioでもGit管理しているプロジェクトのブランチ名が表示されますが、常には表示されていません。複数あるタブの中からGitタブを選択した状態でない確認できません。GUI RやターミナルでRを実行する場合はこの機能もないので、ブランチの確認は別の方法頼みとなります。なので、コードを書いたり実行するコンソールに表示させておくと常にブランチを意識でき、上記の問題を回避可能です。

設定方法

利用するにはパッケージをインストールする必要があります。CRAN未登録なため開発版をGitHubから導入します。

install.packages("remotes")
remotes::install_github("gaborcsardi/prompt")
library(prompt)

promptには

  • prompt_*() で見た目の確認
  • set_prompt()prompt_*()の内容を反映させる
  • suspend(), restore(), toggle() で元に戻す

の機能があります。

Gitブランチ名の出力の他、実行したコードのステータス、起動中のRプロセスにおけるメモリ分配量の表示が可能です。

f:id:u_ribo:20191215095220j:plain

上記の画像は prompt_fancy を指定したターミナルでのRの画面です。オシャレですねー。

では本題、Gitブランチ名の表示を反映させましょう。コンソールで次のコマンドを実行します。なおGitバージョン管理をしていないプロジェクトないし作業ディレクトリでは通常のプロンプトが表示されます。

set_prompt(value = prompt_git)

もちろんmaster以外であればそのブランチ名になります。さらにGitでバージョン管理しているファイルに変更がある状態だとブランチ名の最後に * がつきます。

最後に、この設定はRを終了するとなくなってしまうので、起動時に実行されるよう.Rprofileに書き込んでおきましょう。.Rprofileの編集はusethis::edit_r_profile()を使うのが簡単です。

私の設定は次のようになっています。

.First <- function() {
  if (interactive()) {
    prompt::set_prompt(value = prompt::prompt_git)
  }
}

おまけ: 視認性の高いhackフォントへの変更

Hadleyが登壇している動画を見ていると、彼のRStudio画面で使われているフォントに目が行きます。探してみると、Hadleyは2015年からこのフォントを使っているみたいです(今更気づいてしまった)。

Hack、名前がいいですね。こちらもサクッと真似しましょう。

github.com

f:id:u_ribo:20191215095240p:plain

Hackに設定したRStudioのキャプチャ画面です。0とO、lと1など、見分けづらい文字の視認性が上がっているように思います。

RStudioではエディタやコンソールで表示されるフォントを好みのものに変更できるので、ぜひ気に入ったものを使ってください。 フォントをダウンロード・インストールしたら環境設定を開き、AppearanceのEditor Fontに指定するだけです。 良さげなフォントについては https://blog.nakanishy.com/programming-fonts.html が参考となりました。

ちなみに、これまでは合字に対応したFireCodeInconsolataを使っていました。

Enjoy!


  1. システムが入力を待っている状態の時に表示される文字や記号です。Rではデフォルトで > がプロンプトとして使われます。