cVimは、Vimぽい操作で動かせる、Google Chrome拡張機能です。
前は、Vichromeをカスタマイズして使っていました。一部機能が使えないので前に乗り換えましたが、Migemoは便利でしたので惜しいです。
機能は色々と多いですが、類似のVimiumも機能が増えてきているので、好きな方でいいのかも。
設定も一段落したので、メモ代わりに置いておきます。

環境

  • Windows10 64bit
  • Magic Keyboard - US
  • cVim 1.3

機能

1995eaton/chromium-vim · GitHub
説明が英語なんですが、ブラウザの翻訳機能などで何とか頑張って読んで下さい。他よりも機能は多いので色々とできます。
基本的な機能は他のVim系と似ていますので、基本的な操作についてはそこまで難しくはないと思います。

キーボードだけで文字選択する、Visual/Caret Modeは、マウスの方が速いので使わなくていいかなと思います。

ヘルプページは、:押して、helpと入力してEnterで移動できます。
また、設定のページは、:押して、settingsと入力してEnterで移動できます。

微妙な点

  • 他のVim系に比べて少し重め
  • zrでブラウザ再起動が動かない

少し重い時があるので、古いpcだと厳しい時があるかも。
最近のpcなら問題無いと思いますが、表示したサイト自体が重い時はどうしようもないですね。

再起動が動かないのは、ブラウザ側の問題らしいという書き込みを見た気がするので、今のところは無理っぽい。

海外用の検索エンジンを変更する

デフォルトだと海外用で検索されてしまうので、cVimrcで、設定を変える必要があります。
cVimrcの設定を変更したらSave。適用されていなかったときはブラウザ再起動して下さい。
googleなら、自動でリダイレクトするので設定しなくても大丈夫なはずです。

1.地域の変更

1
let locale = "jp"

2.登録されている検索エンジンを外す為に、googleだけを有効にして、google.co.jpをデフォルト検索に
google.co.jpは設定しなくても、1でjp指定していれば大丈夫みたいです。

1
2
3
4
" completionengines
let completionengines = ["google"]
" defaultengine
let defaultengine = "google.co.jp"

3.検索エンジンを登録する

1
2
3
4
" Amazon jp
let searchengine nb_sb_noss_2 = "https://www.amazon.co.jp/s/ref=nb_sb_noss_2?__mk_ja_JP=%s&url=search-alias%3Daps&field-keywords=%s"
" Wikipedia jp
let searchengine wiki = "https://ja.wikipedia.org/wiki/%s"

4.検索が簡単に出来るようにsearchaliasに登録

1
2
let searchalias a = "nb_sb_noss_2"
let searchalias w = "wiki"

これで、otを押すと、コマンドバーが表示されるので、amazonで検索したいなら、a 半角スペース 検索文字 Enterで検索できます。
oが同じタブで検索。tが新規タブで検索。
googleはデフォルト検索にしたので、otの後に検索文字 Enterで検索できます。また、aでも新規タブで検索ができます。

ちなみに、コマンドバーの位置は、barpositionで変えられます。

前は、searchaliasに、amazon、wikipediaで登録できたのですが、今は英語版が表示されてしまったり、動作が上手くいかないことがあるので、他の名称で登録します。
現在は登録できます。

C-nで選択出来るようにする

今のところ、ブラウザのキーボードショートカットが優先されてしまい動きません。
C-pは問題ないです。
Tabで代用はできます。S-Tabで逆移動になります。

コマンドバーで選択する時に使えると便利です。
ブラウザのキーボードショートカットが優先されるので、変更します。

1.設定を追加

1
set cncpcompletion

2.chrome://extensionsへ移動
3.左上の拡張機能メニュー左の三本線 > キーボードショートカットをクリック
4.cVimの、Let Chrome usefor cncpcompletion settingの項目で、Ctrl-Nに設定する

他にも変更出来る項目があるので、変更したい場合は変更して下さい。

サイトを開いた時のフォーカスを無効にする

1
set noautofocus

cVimの機能を使おうとしたら、検索バーに文字入力していたというようなことが防げます。

ページナビ移動

1
2
let previousmatchpattern = '((?!last)(prev(ious)?|newer|back|less|<|‹|«|←|前へ|前のページ| )+)'
let nextmatchpattern = '((?!first)(next|older|more|forward|>|›|»|→|次へ|次のページ| )+)'

[[ ページ上の戻るリンクをクリック
]] ページ上の次へリンクをクリック

previousmatchpatternnextmatchpatternは、ページ移動するときに探すキーになります。
矢印と日本語を追加しておきました。

Hit a Hintの表示文字

1
let hintcharacters = "asdfghjklwertuioxcvnm"

fなどを押した後に左手だけで押せるようにしていて、右手でマウスを併用する時に便利です。

f 現在のタブでリンクを開く。F 新しいタブでリンクを開く。
W 新しいウィンドウでリンクを開く。mf 複数のリンクを開く。

今は

1
let hintcharacters = "asdfghjklwertuoxcvnm"

にして両手で押しています。

QuickMarks

1
let qmark s = ["http://www.speedtest.net/"]

上記設定後、gosで現在のタブで設定したURLを開きます。

gns 新しいタブで設定したURLを開く。
gws 新しいウィンドウで設定したURLを開く。

ブラウザのブックマークみたいなもので、すぐに移動できるので、よく使うサイトを登録しておくと便利です。

execute

1
map <C-g> :execute vyP<CR>

上記設定後、マウスで文字選択した後にC-g押すと、新しいタブで、選択した文字の検索結果やURLが開けます。

v Visual/Caret Mode 切り替え。
y 現在の選択をコピー。
P 新しいタブで選択したテキストを開く。

連続で実行出来るので、色々と応用が効きそうだと思います。

iunmapAll

1
2
" Text boxesを全て無効
iunmapAll

入力欄でvimっぽい操作ができますが、使わないので無効にしています。

Site-specific Configuration

サイトの特定のキーボードショートカットを優先して、cVimのキーを無効化する設定。

1
2
3
4
5
6
7
8
9
10
" Site-specific Configuration
site 'https://feedly.com/*' {
map g passkeys
map a passkeys
map l passkeys
map i passkeys
map o passkeys
unmap ? J K r j k n p A v s b c V
unmap cm cr
}

passkeys cVimをパスして、サイトにキーを渡す。
unmap cVimでキーを無効化する。

前に、feedlyなどのサイトの設定で、ggなどの除外が効かないと記載しましたが、色々と試したら、少なくともfeedlyでは無効化出来ました。すみません。
unmapで無理な場合は、passkeysを試してみて下さい。

サイトとcVimのどちらのキーを優先させるのか、結構悩みますね。

numerichints

1
2
3
4
5
site 'https://toggl.com/app/timer*' {
set numerichints
unmap s c m n
unmap cm cr mf mr my
}

数字でHit a Hint出来るようになります。
Hit a Hintのキーよりもサイトのキーが優先されるサイトもあるので、そういうサイトでは設定するといいです。

cVimをサイトで無効化

1
let blacklists = ["https://mail.google.com/*","https://www.google.com/calendar/*"]

サイトを追加すると無効化できます。
cVimの機能が不要で、サイトのキーボードショートカットを優先したいときにどうぞ。

insertMode

一時的にcVimを無効化したいときは、iを押すと一時的に無効化できます。
再び有効化するときは、Escで解除できます。

script

vimperatorの代替としてcVim入れてみた - Qiita
ページタイトルとURLをコピーするスクリプトが書いてあったので、参考になります。
スクリプトが書ける方ならば、色々出来そうですね。

cVim - SanRin舎
参考になるリンクが沢山あるので助かります。

他の変更部分の補足

ファイラのPaper Plane xUIを使っていて、両方で出来るだけ同じキーバインドにして押しやすくしているので、結構変えています。
他には、よく使う検索エンジンやサイト登録の一部を載せています。
後は、スクロール量を変えていたりなどしています。

設定ファイル

追記

2015-12-16

  • 間違えていた部分を修正
  • TOPSYから、Yahoo!リアルタイム検索へ変更

2016-01-08

  • cVim 1.2.80 > cVim 1.2.81へ変更
  • Hit a Hint、QuickMarks、executeの説明を追加
  • smoothscrollがデフォルトで無効になったので有効へ
  • executeを追加

2016-06-12

  • 環境 変更
    • Windows7 64bit > Windows10 64bitへ変更
    • Apple Wireless Keyboard (US) > Magic Keyboard - USへ変更
  • cVim 1.2.81 > cVim 1.2.84へ変更
  • cVim 1.2.82でunmapを纏めて書けるようになったので変更。前のバージョンでは動きません
  • 海外用の検索エンジンを変更しても、英語版が表示されていたので変更
  • 検索エンジンにSocial Bearingを追加
  • qmarkを一部削除。追加

2017-11-14

  • cVim 1.2.98へ変更
  • scriptの説明を追加
  • searchengineで設定した後にsearchaliasを書くように変更
  • 検索エンジンなどを一部修正、追加、削除

2018-01-23

  • cVim 1.2.99へ変更
  • Hit a Hintの表示文字へ追加
  • qmarkを一部修正、追加
  • Site-specific Configurationを修正、追加

2018-02-17

  • C-nで選択出来るようにするで、C-nが動かない説明を追加
  • Site-specific Configurationの説明を追加し、関連する説明を修正
    • feedlyを追加
  • cVimをサイトで無効化の説明を追加
  • 追記に新記事、cVimでフォントやサイズなどを変更へリンク追加

2018-03-04

  • iunmapAllの説明を追加
  • scriptの説明にリンク追加
  • qmarkを一部修正、追加
  • scriptを修正、追加
    • サイトタイトルコピーを追加
    • HTML形式でリンクコピーを追加
    • Markdown形式でリンクコピーを追加

2018-04-12

  • scriptを修正
    • HTML形式のリンクコピーで、&amp;などと記載するところを変換していたので修正

2018-05- 04

  • qmarkを一部削除、追加
  • C- j/k : 5回分の j/k 追加
  • ;<*>create markが使えないため、;:の入れ替えを削除
  • unmapにu追加

2018-07-10

  • scriptを修正
    • HTML 新しいタブで開く形式でリンクコピーで、rel="noopener"を追加
    • Markdown形式でリンクコピーを修正

2018-10-24

  • u previousScrollPosition 追加
  • U nextScrollPosition 追加

2019-04-26

  • b goUpUrl 削除
  • u previousScrollPosition > goUpUrlへ
  • U nextScrollPosition 削除
  • s :buffer削除
  • b :buffer追加

2019-05-05

  • ページナビ移動の説明 追加

2019-08-18

  • 一部のsearchengineとsearchaliasの名前を変更
  • scriptで設定したキーを先に書くように変更

2021-05-19

  • 環境変更
    • cVim 1.3へ変更