4
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

vimperatorプラグインcopy.jsで、いま開いてるamazonの本のページの短いURLをクリップボードにコピる。あと正規表現で好きなとこコピる

copy.jsは、今開いてるページの好きなところをクリップボードにワンタッチでコピーできるvimperatorプラグイン。
デフォルトでは、URL、ページタイトルなどがコピーできるようになってる。

以下にあるとおり、いろいろカスタマイズできる。
http://d.hatena.ne.jp/teramako/20080621/p1

amazonの長ったらしい日本語まじりURLを、短いURLにしてクリップボードにコピーする設定を書いてみた。

以下をvimperatorrcに追加

javascript <<EOM
(function () {
  liberator.globalVariables.copy_templates = [
    { label: 'titleAndURL',    value: '%TITLE%\n%URL%' },
    { label: 'title',          value: '%TITLE%', map: ',y' },
    { label: 'anchor',         value: '<a href="%URL%">%TITLE%</a>' },
    { label: 'selanchor',      value: '<a href="%URL%" title="%TITLE%">%SEL%</a>' },
    { label: 'htmlblockquote', value: '<blockquote cite="%URL%" title="%TITLE%">%HTMLSEL%</blockquote>' },

    // ↑ここまでデフォルであるやついろいろ。ここからamazon↓
    { label: 'amazon',   value: 'copy clean amazon url from current page',
      custom: function() {
        var m = content.document.location.pathname.match(/dp\/(\d+)/);
        return m ? ('http://amazon.jp/dp/' + m[1]) : null;
      }
    },
  ];
})();
EOM

.vimperatorrcファイル上では、javascriptコマンドに文字列を食わすと実行できる。
vimperatorのコンテキストで実行されるため、documentオブジェクトにさわるには、content.document と書かないといけないので注意。

無名関数を渡せるので割となんでもできて便利。
以下は、ページ内のコンテンツのうち、正規表現にまっちする文字列をコピーする設定

    { label: 'PA', value: 'copy account_id from CMSP', map: ',pa',
      custom: function() {
        var regexp = /PA\d{8}/;

        return (function (e, re) {
          var m = e.textContent.match(re);
          if (m) return m[0];

          for (var i = 0; i < e.children.length; i++) {
            var result = arguments.callee(e.children[i], re);
            if (result) return result;
          }
          return null;
        })(content.document.body, regexp);
      }}

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
4
Help us understand the problem. What are the problem?