読者です 読者をやめる 読者になる 読者になる

モノノフ日記

普通の日記です

vimをtwitterクライアントにするプラグインtwitvimを試してみた

vimtwitterクライアントに出来るプラグインを見つけたので試してみました。

TwitVim - Twitter client for Vim : vim online

インストール

上記サイトからvbaファイルをダウンロード後、

$ vim twitvim.vba
:source %

と打てば、$VIMHOME/plugin, docディレクトリにそれぞれファイルが展開されます。
しかし展開されるファイル名が自分の環境だと変なことになってたのでリネームしました。

$ mv .vim/plugin/twitvim.vim?[[[1 .vim/plugin/twitvim.vim
$ mv .vim/doc/twitvim.txt?[[[1 .vim/doc/twitvim.txt

あとは.vimrcにユーザ名とパスワードを書けばインストは完了です。

let twitvim_login = "USER:PASS"

使い方

  • Update系コマンド
コマンド名 用途
:PosttoTwitter メッセージを普通にポスト
:CPosttoTwitter 参照しているバッファの行ごとポスト
:BPosttoTwitter 参照しているバッファごとポスト
  • 参照系コマンド
:UserTwitter 自分のタイムラインを取得
:FriendsTwitter 自分+followerのタイムラインを取得
:RepliesTwitter replyを取得
:PublicTwitter public timelineを取得
:DMTwitter ダイレクトメッセージを取得

基本は上のコマンド。あとUtility Commandとして下の5サイトもコマンドから使えるみたいです。

問題点

Updateコマンドでポストした日本語が文字化けします。
原因はupdateのAPIに渡すパラメータをUTF-8でURLエンコードする処理が怪しいと思うんですが、vimスクリプトよくわからない>< 教えてエロい人!

  • twitvim.vim 188〜191行目あたりが怪しい?
" URL-encode a string.
function! s:url_encode(str)
    return substitute(a:str, '[^a-zA-Z_-]', '\=printf("%%%02X, char2nr(submatch(0)))', 'g')
endfunction

明らかに英文字しかパターンマッチさせてないので、下のように変えてみたけどダメでした。

substitute(a:str, '.', '\=printf("%%%02X, char2nr(submatch(0)))', 'g')