Twitter用プラグインのtwittperator.jsとかからURLやタイトルを投稿したい場面は結構あると思うんだけど。みんな結構面倒なことをしてやっている印象がある。
自分の場合は、:tw コメント "TITLE" URL(goo.glで短縮化) のフォーマットで投稿することが多いんだけど、その方法を記そうと思う。
基本的にはtwittperator.js 関連設定 (abbr コマンド) - Death to false Web browser! - vimperatorグループと同じなんだけど、abbrevを使用している。最周知を込めて言及しておこうかと。
vimユーザは知っているかもしれないが、一応説明すると正確にはabbreviateで「簡潔にする」とか「短くする」とかの意味がある。
一般的な使い方は、その意味に沿って
abbrev i18n internationalization
とか、と設定しておくと、コマンドライン等で、i18nと打って<C-]>やSpaceや"等の単語の境目となりそうな文字を入力するとで"internationalization"に展開されるよというもの。
んで、Vimperatorの場合は、-j[avascript]オプションがある。このオプションはRHSをJavaScriptコードとみなして、evalし、戻り値に展開するよというもの。この機能のおかげでabbrevコマンドは鬼の様な拡張性を持たせることができる。
cabbrev -javascript TITLE buffer.title cabbrev -javascript URL buffer.URI
まあ説明は不要ですね。cabbrevはコマンドラインのみで有効な短縮機能。
js <<EOM userContext.ggl = function getGoogleShortenURL (url, callback) { let uri = "https://www.googleapis.com/urlshortener/v1/url"; let xhr = new XMLHttpRequest(); xhr.open("POST", uri, !!callback); if (callback) { xhr.onreadystatechange = function () { if (xhr.readyState == 4 && xhr.status == 200) { callback(JSON.parse(xhr.responseText)); } } } xhr.setRequestHeader("Content-Type", "application/json"); xhr.send(JSON.stringify({ longUrl: url || buffer.URL })); if (!callback) { return JSON.parse(xhr.responseText).id; } }; EOM cabbrev -javascript ggl userContenxt.ggl(buffer.URI)
というわけで、自分の場合は、:tw コメント "TITLE" ggl と入力していくだけで、観覧中のページに対して言及できるわけ。abbrev系の短縮はコマンドに依存しないためどのコマンドでも使用できる良さがある。短縮URLをコピーしたくなったら、:copy ggl で展開させれば済む(最後にSpaceを入れている)等ね。
僕はmapで独自設定をするが(すぐ忘れるので)好きじゃないからかも知れないけど、応用範囲の広いabbrevを使用してますよ。という話でした。
Jenita2011/11/22 11:12I have been so beiwlederd in the past but now it all makes sense!
hiwnccpn2011/11/22 22:12w83Lcb <a href="http://rcvzsaopfoqz.com/">rcvzsaopfoqz</a>
znlupzqt2011/11/23 01:545mzUdu , [url=http://fwkpjzqrubgk.com/]fwkpjzqrubgk[/url], [link=http://ttbfahhorlhd.com/]ttbfahhorlhd[/link], http://nejxdqutifvm.com/
kjgxmz2011/11/30 23:29NZbeAT <a href="http://elynpnldthdg.com/">elynpnldthdg</a>
cqytlpiruj2011/12/04 21:43xZ9B0P , [url=http://knxqpinhhkrd.com/]knxqpinhhkrd[/url], [link=http://jzlpgxuaglvq.com/]jzlpgxuaglvq[/link], http://geiwkcbkhzow.com/