Gist を Vim から操作する Gist.vim が相当便利
id:mattn さんが作った Gist.vim が gists を使う際にとても便利です。
curl が必要なのと id と token を vimrc に書けば使える。
ちなみに git config に設定していれば書かなくても大丈夫
簡単に操作の説明。(version 2.5)
let g:github_user = 'dealforest' let g:github_token = 'XXXXXXXXXXXXXXXXXX'
| :Gist | ポストされます。 |
| :’<,'>Gist | 矩形選択部分をポストします |
| :Gist -p | privateモードでポスト |
| :Gist xxxx | idを指定して開く |
| :Gist -l [ユーザID] | (ユーザーを指定して)一覧を開く |
| :Gist -la | 全てのユーザの最新gist一覧 |
| :Gist -c XXXXX | クリップボードにコピー |
| :Gist -e | 編集。ただし gist buffer 上でしかできない。 |
ショートカット
nnoremap <silent> ,gn :Gist<cr> nnoremap <silent> ,gl :Gist -l<cr> nnoremap <silent> ,ga :Gist -a<cr> nnoremap <silent> ,ge :Gist -e<cr> nnoremap <silent> ,gp :Gist -p<cr> nnoremap <silent> ,gr :Gist nnoremap <silent> ,gu :Gist -l
こんな感じでショートカットを作ってます
パッチ
実際に使っていて凄い便利。
ただ :Gist xxxx がどーしても動かなかったので gist.vim を修正した。
@@ -391,7 +398,7 @@
elseif arg =~ '^\(-e\|--edit\)$' && bufname =~ bufnamemx
let editpost = 1
let gistid = substitute(bufname, bufnamemx, '\1', '')
- elseif len(gistls) > 0 && len(gistnm) == 0
+ elseif len(gistnm) == 0
if editpost == 1
let gistnm = arg
elseif len(gistls) > 0
gistls についてはそれ以下のところで判断してるのでここでいれたら動かないと思う。
あと自分用に少しカスタマイズした。
:Gist で POST した後に :Gist -l で一覧を表示した際
少しラグがありさきほど POST したのが表示されない。
修正したり変更したりするのが不便。というわけで POST 後に自動的に
buffer に開くようにした。これで :w で再度ポストもそのままできるから便利。
split して開くのがどーかとも思うけど、まぁいいやと放置
@@ -340,13 +340,6 @@
let res = substitute(res, '^.*: ', '', '')
if len(res) > 0 && res != 'http://gist.github.com/gists'
echo 'done: '.res
+
+ let mx = '^http://gist.github.com/\(\d\+\)$'
+ if res =~# mx
+ let gistid = substitute(res, mx, '\1', '')
+ echo gistid
+ call s:GistGet(g:github_user, g:github_token, gistid, 0)
+ endif
else
echoerr 'Post failed'
endif
GistListAction と動作が似てる(ほぼそこのコピペ)からいじればいいとは思うけど
そもそも vimscript そこまで分からなってないため妥協。
とりあえず動いてるしいいかと。。。
デバッグとかってどーするもんなんだろ。
みんな echo でしてんのかな。
効率いい方法はどうしたものか。