Hatena::Groupvimperator

Vimple Star Sprites RSSフィード

 | 

2011-07-23

みんな abbreviate を有効に使おう

21:59 | みんな abbreviate を有効に使おう - Vimple Star Sprites を含むブックマーク はてなブックマーク - みんな abbreviate を有効に使おう - Vimple Star Sprites

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]オプションがある。このオプションはRHSJavaScriptコードとみなして、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を使用してますよ。という話でした。

JenitaJenita2011/11/22 11:12I have been so beiwlederd in the past but now it all makes sense!

hiwnccpnhiwnccpn2011/11/22 22:12w83Lcb <a href="http://rcvzsaopfoqz.com/">rcvzsaopfoqz</a>

znlupzqtznlupzqt2011/11/23 01:545mzUdu , [url=http://fwkpjzqrubgk.com/]fwkpjzqrubgk[/url], [link=http://ttbfahhorlhd.com/]ttbfahhorlhd[/link], http://nejxdqutifvm.com/

kjgxmzkjgxmz2011/11/30 23:29NZbeAT <a href="http://elynpnldthdg.com/">elynpnldthdg</a>

cqytlpirujcqytlpiruj2011/12/04 21:43xZ9B0P , [url=http://knxqpinhhkrd.com/]knxqpinhhkrd[/url], [link=http://jzlpgxuaglvq.com/]jzlpgxuaglvq[/link], http://geiwkcbkhzow.com/

トラックバック - http://vimperator.g.hatena.ne.jp/teramako/20110723
 |