gistpad (2) スマートなファイル指定、自動コミット & プッシュ、ファイル重複時の候補表示、zsh によるファイル名補完

gistpad を修正して汎用的に使えるようにしてみた。だいぶ便利になったはず。

alias gi='gistpad'

スマートなファイル指定

gist の番号を指定しなくてもファイル名だけで編集できる。

~# gi storygen.js  # http://gist.github.com/365874 の storygen.js を編集する

自動コミット & プッシュ

オプションを指定するとエディタ終了後に自動で comit / push origin master が行われる。

~# gi -c  memo.txt  # auto commit
~# gi -p  memo.txt  # auto push
~# gi -pc memo.txt  # auto commit & push

ファイル重複時の候補表示

同名のファイルが存在していた場合には候補を表示して選択をうながす。

~# gi gistfile1.js
ambiguous filename:
        [0] /home/tily/gists/133515/gistfile1.js # // ==UserScript==
        [1] /home/tily/gists/120302/gistfile1.js # // ==UserScript==
        [2] /home/tily/gists/133756/gistfile1.js # // ==UserScript==
> 2 [ENTERキーを押す]

zsh によるファイル名補完

今まで gist にポストしたファイルから番号なしでファイル名を自動補完する。

~# gi [TABキーを押す]
AllEvents.java                                 gistfile1.rb                                   other_class_instance_spec.rb                 
HelloAndroid.java                              gistfile1.yml                                  output.txt                                   
array_spec_01.rb                               gistpad                                        result.txt                                   
blog.md                                        google_image_search_rakugaki.user.js           server.rb                                    
blog.txt                                       hatena_bookmark_tags_to_trac_wiki_notation.rb  simple_twitter.user.js                       
bot.rb                                         how_to_mock_kernel_method_spec.rb              solamimi.rb                                  
browse                                         input.txt                                      stammer.rb                                   
cgi-erb-sample.rb                              inspect_object_model.rb                        storygen.js                                  
consistent_hash.rb                             itunes_delete_redundant_files.rb               stubbed_and_mocked_spec.rb                   
decent_links.user.js                           japanese_spec.rb                               tategaki_all.user.js                         
delete_hatena_bookmark_tags.rb                 java_style_new.rb                              teinei.rb                                    
delete_hatena_diary_entries.rb                 kissa.rb                                       trac_sortable_ticket.user.js                 
enumerable_class.rb                            kissa.yml                                      twitter_statuses_to_tumblr_chat.rb           
enumerarerable.rb                              make_ldrize_stumble.rb                         vb.rb                                        
example.txt                                    make_zozo_search_better.user.js                vb_spec.rb                                   
fast_look_up_kihwanujish.user.js               memo.txt                                                                                    
gistfile1.js                                   omniscient.rb
~# gi s[TABキーを押す]
server.rb                   solamimi.rb                 storygen.js                                                                     
simple_twitter.user.js      stammer.rb                  stubbed_and_mocked_spec.rb

この機能を使うには以下のような設定が必要。

  • .zshrc
fpath=(~/zshcomp ${fpath})
autoload -U compinit; compinit
  • 補完用関数の設定
~# gi -z > ~/zshcomp/_gistpad