cVim カスタマイズ

in tools
  1. 環境
  2. 機能
  3. 微妙な点
  4. 海外用の検索エンジンを変更する
  5. C-nで選択出来るようにする
  6. サイトを開いた時のフォーカスを無効にする
  7. ページナビ移動
  8. Hit a Hintの表示文字
  9. QuickMarks
  10. execute
  11. iunmapAll
  12. Site-specific Configuration
  13. cVimをサイトで無効化
  14. script
  15. 他の変更部分の補足
  16. 設定ファイル
  17. 追記

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

環境

機能

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

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

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

微妙な点

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

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

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

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

1.地域の変更

let locale = "jp"

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

" completionengines
let completionengines = ["google"]
" defaultengine
let defaultengine = "google.co.jp"

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

" 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に登録

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.設定を追加

set cncpcompletion

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

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

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

set noautofocus

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

ページナビ移動

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

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

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

Hit a Hintの表示文字

let hintcharacters = "asdfghjklwertuioxcvnm"

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

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

今は

let hintcharacters = "asdfghjklwertuoxcvnm"

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

QuickMarks

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

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

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

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

execute

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

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

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

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

iunmapAll

" Text boxesを全て無効
iunmapAll

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

Site-specific Configuration

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

" 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

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をサイトで無効化

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

2016-01-08

2016-06-12

2017-11-14

2018-01-23

2018-02-17

2018-03-04

2018-04-12

2018-05- 04

2018-07-10

2018-10-24

2019-04-26

2019-05-05