Chrome上でVi/Vimのキーバインドを再現するChrome拡張機能cVim

関連記事

現在はSurfingkeysへの乗り換えを推奨

cVimはメンテナンスされていないので、Surfingkeys拡張機能への乗り換えを推奨します。

キーボードでの快適なWEBブラウジングを提供するcVim

https://chrome.google.com/webstore/detail/cvim/ihlenndgcmojhcghmfjfneahoeklbjjh?hl=ja

cVimはChrome/Chromium系ブラウザでVi/Vimのキーバインドを高い精度で提供するChrome拡張機能です。

hjklによるカーソル移動、gg/Gによるページ上の移動、閲覧履歴への素早いアクセス、キーボードのみでのリンク遷移Hit-a-Hint機能などを提供します。

慣れればほとんどのWEBページでマウスを圧倒的に上回るブラウジングができるように。

もしChrome拡張機能を一つだけ選ぶとしたら間違いなくcVimを選ぶと言うくらいには劇的な時短効果があります。

初期状態での便利なキーバインド

j/kによる上下移動

もはやどんなWEBブラウザでも標準装備してほしいくらい快適です。

ホームポジションから遠すぎて非効率的なカーソルキーを使わずに済みます。

H/Lによる戻る/進む

こちらも遠くて非効率的なバックスペースを置き換えてくれます。

gg/Gによるページトップ/最下部への移動

d/uによるページダウン/アップ

Home/Endキー、ページダウン/ページアップキーもホームポジションから遠すぎるので、使わないに越したことはありません。

fによるHit-a-Hint機能

画像のようにWEBページ上のリンクにキーボードのみで素早くアクセスできる機能です。

キーボードのどの文字を使うかは設定で変更可能で、ホームポジションから近いasdfhjklに割り当てるのがおすすめ。

o/tによるクイックアクセス機能

o/tを押下することにより、ブラウザ履歴やブックマークに部分一致で素早くアクセスできる入力窓を表示できます。

素のChromeではCtrl+L/Alt+Dによるロケーションバーへの遷移と絞り込みに近い機能です。

日本語の絞り込みが若干弱いですが、大抵の履歴は一瞬で開くことができるでしょう。

『任意の一文字 検索したい文字列』と入力することでGoogle検索や各種ショッピングサイトの検索結果に一発で飛ぶように設定することも可能です。

テキストエリアでのキーバインド

cVimは通常のWEBページとテキストエリアでのキーバインドが別々に設定できます。

テキストエリアの主要なキーバインドは以下になります。

  • Ctrl+B/一文字戻る
  • Ctrl+F/一文字進む
  • Ctrl+H/一文字戻る
  • Ctrl+J/一行下がる
  • Ctrl+K/一行上がる
  • Ctrl+L/一文字進む
  • Ctrl+O/行末まで削除
  • Ctrl+U/行頭まで削除

VimだけでなくEmacsのキーバインドも一部使えるのが特徴。

個人的にはCtrl+Hは後述の設定でバックスペースの代替にするのがおすすめ。

慣れるとWordPressの記事投稿の効率が全然違います。

おすすめの設定

let locale = "jp"
let hintcharacters = "asdfhjkl"
set smoothscroll
set cncpcompletion
set autohidecursor

Hit-a-Hintの文字変更とsmoothscrollだけは行っておいた方がいいでしょう。
cncpcompletionはWindows上では動作しない設定ですが、補完ウィンドウでCtrl+N, Ctrl+Pによる移動を可能にするらしいです。

TABとShift+TABでアイテムを切り換えられるのでそれほど不便は感じません。

map l nextTab
map h previousTab
map A scrollToRight
map I scrollToLeft
map gxh closeTabsToLeft
map gxl closeTabsToRight
imap <C-d> deleteForwardChar
imap <C-h> deleteChar

標準キーバインドの変更です。
カーソルキーの左右移動よりは前/次のタブの移動の方が明らかに頻度が高いのでhlに割り当て。
Viの行頭/行末挿入のキーからの連想で画面左と右へのスクロールにAとIを割り当て。
右のタブを全て閉じるgx$と左のタブを全て閉じるgx0は押しづらいので左右移動の連想からgxlとgxhに変更。
さらにテキストエリアでのCtrl+DにDELETE、Ctrl+Hにバックスペース機能を割り当てています。

let searchengine amazon = "https://www.amazon.co.jp/s/ref=nb_sb_noss?__mk_ja_JP=カタカナ&url=search-alias%3Daps&field-keywords=%s"
let searchalias a = "amazon"
let searchengine rakutenichiba = "https://search.rakuten.co.jp/search/mall/%s/"
let searchalias r = "rakutenichiba"
let searchengine rakutensearch = "https://websearch.rakuten.co.jp/Web?tool_id=1&ref=ff_box&qt=%s"
let searchalias R = "rakutensearch"
let searchengine primevideo = "https://www.amazon.co.jp/s/ref=nb_sb_noss_2?url=search-alias%3Dprime-instant-video&field-keywords=%s"
let searchalias v = "primevideo"
let searchengine twitter = "https://twitter.com/search?q=%s"
let searchalias t = "twitter"
let searchengine ponpare = "https://www.ponparemall.com/search/?keywordAnd=%s&itemInv=true"
let searchalias p = "ponpare"
" youtubeの文字列を使うと設定ファイルが機能しなくなる
let searchengine myyoutube = "https://www.youtube.com/results?search_query=%s"
let searchalias y = "myyoutube"

補完ウィンドウでよく使うサイトの検索機能を一文字で呼び出せるようにしてあります。
g=Google、a=Amazon、r=楽天市場、v=Amazon PrimeVideo、t=Twitter、p=ポンパレモール、y=Youtubeにそれぞれ割り当ててあります。
searchengineにyoutubeと言う文字列が設定できないのでmyyoutubeとしています。

関連記事

SNSでシェアする