Posts tagged: plugin

Gist を Vim から操作する Gist.vim が相当便利

By admin | 2009年6月9日

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 でしてんのかな。
効率いい方法はどうしたものか。

コード中の class や function を perldoc で簡単に表示できる Vim プラグイン

By admin | 2009年5月29日

id:secondlife さんの Vim プラグイン perldoc.vim がやばい。
久々にすごいヒット。使い方も簡単。インストールも簡単。
以下、本家引用

適当な func/class の上で K で読めるようになる。
perldoc 表示側でも K で飛べるのでぐるぐる巡れる。
s でソースコードとトグルする。

ここでいう func って perldoc -f で探すもののこと。(my, open, map とか)

はまりどこ

そんなだいそれたものでもないけど。。。

  • ~/.vim/ftplugin/perl/init.vim に setlocal iskeyword+=: をかく。かかないとモジュール名(::)で区切られて perldoc が開く。(ex. URI::Simple => URIで開く):set iskeyword で確認できるよ。
  • syntax plugin on ってのが
    .vimrc に書いてないと、そもそも plugin 自体が動かない。

初めての VimScript そして github

凄い便利だけど、個人的に横分割があまり好きでない。
というわけで、ソースもみやすそうだったので縦分割で見れるようにいじってみた。

VimScript 触るのは初めてだったけど、help と勘でどーにかなった。
といっても何をやってるかはほんとに勘でこうだろうと
決めつけていじってるので何かあった時はご了承をw

~/.vim/ftplugin/perl/init.vim にこれを追記すると縦分割で表示されるようになる。
let b:window_vsplit = 1
--- perldoc.vim	2009-05-29 03:14:14.000000000 +0900
+++ perldoc_vsplit.vim	2009-05-29 03:14:02.000000000 +0900
@@ -13,17 +13,26 @@
 let s:buf_nr = -1
 let s:mode = ''
 let s:last_word = ''
+let b:window_vsplit = 0

 function! s:PerldocView()
   " base on FuzzyFinder WindowManager
   let cwd = getcwd()

   if !bufexists(s:buf_nr)
-    leftabove new
+    if b:window_vsplit
+      rightbelow vnew
+    else
+      leftabove new
+    end
     file \[Perldoc]
     let s:buf_nr = bufnr('%')
   elseif bufwinnr(s:buf_nr) == -1
-    leftabove split
+    if b:window_vsplit
+      rightbelow vnew
+    else
+      leftabove new
+    end
     execute s:buf_nr . 'buffer'
     delete _
   elseif bufwinnr(s:buf_nr) != bufwinnr('%')

ソースは github にあります。
dealforest’s perldoc-vim at master – GitHub
git さわろうさわろうと思ってよーやくさわってみた。
fork していいものか分からなかったけど勢いでしてみた。
まずかったらすみません。。。

なんにせよ初めて尽くしで色々おもしろかったー。
せっかく fork したんだし、これを機に勉強を兼ねてしばらくいじろうかな

WordPress Themes