VimperatorがないからとChromeを使わずにFirefoxばっかり使ってたけど、cVimがなかなか悪くなかった。

cVim - Chrome ウェブストア

上のリンクからダウンロードできる。自分がよく使う範囲でVimperatorと違う点はタブの消去がdではなくxなくらいで、大体同じようなノリで使える。

Vimperatorではhlでタブの移動する以外は、ytでページのタイトルコピー、ymでマークダウン形式のリンクでコピーってのを設定してるので、cVimでも同じことをできるようにしてみた。

map l nextTab
map h previousTab

copyTitle -> {{
  var title = document.title
  document.addEventListener('copy', function(e) {
    e.preventDefault()
    e.clipboardData.setData('text', title)
    document.removeEventListener('copy', arguments.callee, false)
  })
  document.execCommand('copy')
  Status.setMessage('Copied: ' + title)
}}

copyMdLink -> {{
  var title = document.title
  var url = location.href
  var text = '[' + title + '](' + url + ')'
  document.addEventListener('copy', function(e) {
    e.preventDefault()
    e.clipboardData.setData('text', text)
    document.removeEventListener('copy', arguments.callee, false)
  })
  document.execCommand('copy')
  Status.setMessage('Copied: ' + text)
}}

map yt :call copyTitle<CR>
map ym :call copyMdLink<CR>

'copy'イベントでevent.clipboardData.setData('text', text)でコピーする文字列を差し替えてる。JSのちょっとした操作をショートカット登録できる環境としても便利そう。 でも共通処理を関数にまとめようとすると、その関数を書くところがないってところにモヤっと。documentとかに埋め込むのが一番早そうだけど綺麗ではないよね。

あと気になったのはVimperatorが ~/.vimperatorrcに設定ファイルを書けるに対して、一応

let configpath = '/path/to/.cvimrc'

で外部ファイルに設定を書けることになってるけど、/path/to/.cvimrcに書いてなぜか設定が適応されない。なんででしょう。