もっと身近に、gistコマンド
2008年に gistコマンドよりちょっと便利なgisty - SWDYH というエントリがあったようです。しかし、gistコマンドだって改良されています。十分に便利になっているのです。
エントリを量産していると、たびたびコードを貼り付けたくなる機会があります。スーパーpre記法も良いのですが、ブラウザ上でエントリを書いているのにコード量が多くなると、スクロール必須になって編集しづらくなりますよね*1。だもんで、場合によってはgistをembedしたほうが良かったりします。たとえばdiffの結果などはgistをembedしたほうが見やすかったりとか。
今まではGist.vimを使ってVimからgistにポスト、それをブラウザから参照してembedしていました。これでも十分に便利だったのですが、複数ファイルを一つのgistにまとめられないのが少し不満だったり。そんなおりにhomebrewのformula探訪をしていてみつけたのがgistコマンドなのでした。さっそく使ってみましょう。
gistコマンド
設定
githubのusernameとトークンを設定する。トークンはここの Account Admin をクリックするとでてきます。
$ git config --global github.user username $ git config --global github.token 0123456789yourf0123456789tokenhttp://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 ^Dhttps://github.com/defunkt/gist/blob/master/README.markdown
もう少し便利にする設定
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
先にトークンを設定したように git-config でデフォルトを設定できる項目があります。
gist.private でプライベートgistとするか設定できます。--private オプションに対応。
gist.extension ではデフォルトの拡張子を設定しておけます。必ずしもファイル単位でgistにあげるわけではなく、たいてい使う言語が同じなんて場合には良いですよね。--type オプションに対応。
gist.browse では、gistにあげたあとでブラウザで開くかどうかを設定できます。--open オプションに対応。ちなみにMacの場合は次のような方法でも実現できることはできるのですが。
% echo 'hello' | gist | xargs open
便利になってるよねー
gistコマンドとの違いはこんな感じです。
http://d.hatena.ne.jp/swdyh/20081207/1228655198
- ポストするときにファイルを指定。ファイル名、拡張子つきでアップされる。
- ポスト時に複数ファイルを指定できる。
- ポスト後、ブラウザで開く。(Macのみ)
- ポスト後、ローカルにcloneする。
- 過去のgistにアップしたのを全部のclone、またはpullする機能
2008年のエントリとの比較なのでフェアではないのですが、最初の3つについては現在のgistコマンドでも実現されていますね。clone、pullはこれからも実装されない気がします。方針が違うんだろうなーというか、なんというか。
*1:何かしらエディタ使えばいいのですが、それはさておき