もっと身近に、gistコマンド

2008年に gistコマンドよりちょっと便利なgisty - SWDYH というエントリがあったようです。しかし、gistコマンドだって改良されています。十分に便利になっているのです。

エントリを量産していると、たびたびコードを貼り付けたくなる機会があります。スーパーpre記法も良いのですが、ブラウザ上でエントリを書いているのにコード量が多くなると、スクロール必須になって編集しづらくなりますよね*1。だもんで、場合によってはgistをembedしたほうが良かったりします。たとえばdiffの結果などはgistをembedしたほうが見やすかったりとか。

今まではGist.vimを使ってVimからgistにポスト、それをブラウザから参照してembedしていました。これでも十分に便利だったのですが、複数ファイルを一つのgistにまとめられないのが少し不満だったり。そんなおりにhomebrewのformula探訪をしていてみつけたのがgistコマンドなのでした。さっそく使ってみましょう。

gistコマンド

インストール

% brew install gist

gem でのインストールや curl でバイナリをもってくる手段もあるみたいです、上記README参照。

設定

githubのusernameとトークンを設定する。トークンはここAccount Admin をクリックするとでてきます。

$ git config --global github.user username
$ git config --global github.token 0123456789yourf0123456789token
http://help.github.com/git-email-settings/

~/.gitconfigに設定がかかれます。ちなみに、この設定をしないとAnonymousとしてgistにポストされます。

使ってみる
% gist -h | gist

gist -h でusage表示。そのままパイプかませてgistにポストしたのがこれ。

使い方、オプションともにシンプルですね。
他にもポストする方法はいくつかあるようで、次のような感じ

$ gist < file.txt   # ファイルをリダイレクト
$ echo secret | gist --private   # echoをパイプで、かつプライベートで
$ echo "puts :hi" | gist -t rb   # echoをパイプで、拡張子をruby指定
$ gist script.py   # リダイレクトした場合と同じ
$ gist script.js notes.txt   # 複数ファイルもいける
$ gist -   # こういうやり方もある
the quick brown fox jumps over the lazy dog
^D
https://github.com/defunkt/gist/blob/master/README.markdown
もう少し便利にする設定
  • gist.private - boolean (yes or no) - Determines whether to make a gist private by default
  • gist.extension - string - Default extension for gists you create.
  • gist.browse - boolean (yes or no) - Whether to open the gist in your browser after creation. Default: yes
https://github.com/defunkt/gist/blob/master/README.markdown

先にトークンを設定したように git-config でデフォルトを設定できる項目があります。
gist.private でプライベートgistとするか設定できます。--private オプションに対応。
gist.extension ではデフォルトの拡張子を設定しておけます。必ずしもファイル単位でgistにあげるわけではなく、たいてい使う言語が同じなんて場合には良いですよね。--type オプションに対応。
gist.browse では、gistにあげたあとでブラウザで開くかどうかを設定できます。--open オプションに対応。ちなみにMacの場合は次のような方法でも実現できることはできるのですが。

% echo 'hello' | gist | xargs open
便利になってるよねー

gistコマンドとの違いはこんな感じです。

  • ポストするときにファイルを指定。ファイル名、拡張子つきでアップされる。
  • ポスト時に複数ファイルを指定できる。
  • ポスト後、ブラウザで開く。(Macのみ)
  • ポスト後、ローカルにcloneする。
  • 過去のgistにアップしたのを全部のclone、またはpullする機能
http://d.hatena.ne.jp/swdyh/20081207/1228655198

2008年のエントリとの比較なのでフェアではないのですが、最初の3つについては現在のgistコマンドでも実現されていますね。clone、pullはこれからも実装されない気がします。方針が違うんだろうなーというか、なんというか。

*1:何かしらエディタ使えばいいのですが、それはさておき