no-image

Windowsのvimでoutputzのカウントを行う

outputz – outputz interface for Vim : vim onlineというvimプラグインを利用すると,保存時にvimの編集文字数をpostしてくれるんだけど,これが,Kaoriyaで配布されてるcurl.exeを使ってwindows環境から送信しようとするとうまくいかない.どうやらLinuxとWinでは引数が違うみたい?curlの差かもしれない.

解決方法はすでに以下のサイトにあるように,–form-stringを-Fにする.

果てしなくぞんざいな日記: Windows版VimでOutputzプラグインを使う。

でもこれをやっちゃうと今度はLinuxの方で動かなくなるので,以下のような感じで分岐するようにした.autoload/outputz.vimのs:sendですね.


function! s:send(n) 
  if !exists('g:outputz_secret_key')
    echoerr 'g:outputz_secret_key is not defined'
    return
  endif

  if has('win32')
    silent! execute printf('!curl -F key=%s -F uri=%s -F "size=%d" http://outputz.com/api/post',
           fnameescape(g:outputz_secret_key),
           fnameescape({g:outputz_uri_function}()),
           a:n)
  else
    silent! execute printf('!curl --form-string key=%s --form-string uri=%s --form-string "size=%d" http://outputz.com/api/post',
           fnameescape(g:outputz_secret_key),
           fnameescape({g:outputz_uri_function}()),
           a:n)
  endif
endfunction

あと,URLにvimのfaviconが出したかったので以下のように書いてみたけど,faviconが表示されるのは,対象のサイトのルートにfavicon.icoがある時だけみたいで,faviconのファイル名が違うvim.orgはダメらしい.(あとこれ関数直接書きかえずにうまくやる方法があるっぽい?)


function! outputz#default_uri_function()  "{{{2
  return 'http://www.vim.org/' . &l:filetype
endfunction

自分はVimperatorかIRCかvimしか使わないから,これで入力のすべてをカバーできるようになった.やっぱりコードは結構かいてるので,outputz.vimを入れてから原稿用紙20枚くらいはあっというまにいってしまう.
いやー,Outputzほんとに楽しいです.