rcmdnk's blog

20250713_vomnibar_200_200

3月頃にすでに一部のChromeの拡張機能が使えなくなる警告は出ていましたが、とりあず手動で有効にすれば使えていました。 ただ、今回一度落として再起動した際にManifest V3のアップデートが完全に?有効になったようで 有効にすることが不可能になりました。 いくつか使えなくなったものがありますが、cVimの乗り換えに関して。

これまで使っていたものVimperator -> cVim

ブラウザでVimライクな操作をするための拡張機能として 元々FirefoxでVimperatorを使っていましたが、 Firefoxのアップデートで数々の拡張機能が使えなくなり、 似たような拡張機能を探して、一番使えそうなVimiumという拡張機能を試してみました。 ただ、基本的にはキーマッピングを変える位しか出来ないので Vimperatorとは程遠いものでした。 VimiumはFirefox版もChrome版もあり、そこも良い点ですが、 特にFirefox版はうまく動かないものも多く使えませんでした。

そこでもはやFirefoxにこだわる必要もなくなったのでChromeに乗り換えました。

ChromeにはcVimという拡張機能があり、それがある程度Vimperatorの代わりになるものだったので これまでずっとそれを使ってきました。

ただ、このcVimはかなり前にChromeのウェブストアからは消えていて 自分でビルドして入れたりしていました。

ただ今回のChromeのアップデートで完全に使えなくなったので、 自分でなんとかコードをアップデートして使うか、別なものを使うかというところで 色々見てみた結果、 Vimiumをフォークした Vimium C が良さそうだったので乗り換え先にしました。

Vimium Cへの乗り換え

Vimium C - All by Keyboad

オリジナルのVimiumは基本的にはキーマッピング+Hit a hint(リンクに対してヒントを表示してそれをキーボードで選択する)という機能がメインでした。

VimperatorやcVimはコマンドラインモードもあり、コマンドの定義も出来てそれによっていろいろな操作が出来るようになっていましたが、 Vimiumでは出来ず、これに関してはVimium Cでも出来ません。

ただ、Vimiumではキーマッピングも基本的にはもともとあるコマンドに対してキーマッピングを設定するというものですが、 Vimium Cではより複雑な設定が出来るのと、 独自コマンドの拡張で特定のURLを開くキーを設定したりすることも出来るようになっています。

これでだいたいいまやりたいことが出来そうだったのでVimium Cで一通り設定をしてみました。

設定

Custom key mappings

以下をVimium CのオプションのCustom key mappingsに追加。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# Leader
mapKey , <leader>

# Unmap
# <a-f> is used for chrome native search
unmap <a-f>

# Move
map <c-f> scrollFullPageDown
map <c-b> scrollFullPageUp
map <c-u> scrollPageDown
map <c-d> scrollPageUp
map <c-h> scrollLeft
map <c-j> scrollDown
map <c-k> scrollUp
map <c-l> scrollRight

# Tab
map d removeTab
map u restoreTab
map t Vomnibar.activateInNewTab

# Search selected text by Google
map <c-g> autoOpen keyword="google"

# Put [url](title) in clipboard
map <leader>i openUrl url="javascript:(()=>{const\u0020t=document.title.replace(/([\\[\\]])/g,'\\\\$1'),u=location.href,m='['+t+']('+u+')';navigator.clipboard.writeText(m);let\u0020d=document.createElement('div');d.textContent='Copied:\u0020'+m;Object.assign(d.style,{position:'fixed',bottom:'20px',right:'20px',background:'#333',color:'#fff',padding:'10px\u002015px',zIndex:99999,borderRadius:'6px',fontSize:'14px',boxShadow:'0\u00202px\u00206px\u0020rgba(0,0,0,0.3)',maxWidth:'80%',wordBreak:'break-word'});document.body.appendChild(d);setTimeout(()=>d.remove(),2500);})()"

# Others
map y copyCurrentUrl
map r reload hard

leader設定はVimium、Vimium Cともにサポートされてませんが、 擬似的にmapKeyを使うことで実現できます。

Feature Request: Leader key support · Issue #1986 · philc/vimium

leader keyword support · Issue #1107 · gdh1995/vimium-c

Move/Tab及びOthersにある設定はVimiumでも出来るものです。 また、<a-f>をunmapしているのは、Chromeの検索を別途で<a-f>で使いたいからです。

Vimium Cを使った理由はそれ以外のautoOpenopenUrlコマンドを使ってもの。

ワンキーで選択中のテキストをGoogleで検索する、という操作をVimperator以来よく使っているのでそれがないと困るのですが、 Vimiumだと実現は難しそう。

How can I search the selected text with my custom search engines with a single key? · Issue #2566 · philc/vimium

一方、Vimium Cなら、autoOpenというコマンドを使いそれを実現できます。

1
map <c-g> autoOpen keyword="google"

ここでkeywoardで指定しているものは オプションのCustom search enginesで設定されているもので、 googleはデフォルトで設定されています。 これで選択中のテキストをGoogleで検索して開けます。

似たようなことはVimiumでも例えばVisualモードに入って単語を選択して、pで検索、ということも出来ますが、 左手キーボード、右手マウス、といった 感じで操作している際に右手で選択して左手で一発サーチ、 がしたいのでこれが必要です。

もう一つはopenUrlコマンドで、これはその名の通り指定したURLを開くコマンドです。 VimperatorやcVimであったqmarkのような使い方も出来ますし、 これにBookmarkletのコードを指定することも出来るので 表示中のページのいろいろな情報を取得したりすることも出来るようになります。

上の設定では<leader>i(,i)で表示中のページを[url](title)の形式でクリップボードにコピーするBookmarkletを実行します。 ちょっと後半にごちゃごちゃと追加がありますが、 navigator.clipboard.writeText(m)より後は右下にコピーしたよ、という表示を出すためのものなので必要なければ削除しても大丈夫です。

ちょっとURLをメモしておきたいときに便利でよくつかうのでこれもないと困るもの。

Vonibarを半透明にする

oなどで表示されるVomnibarですが、例えばちょっと表示されてるページの何かを検索しようと思ったとき、 見ながら検索したいのにVomonibarが出てしまうと完全に見えなくなってしまい困ることがあります。

cVimでも同じようなことがあって、そういった表示を半透明にするようにしていました。

Vimium Cでも同じように、 Custom CSS for Vimium C UIの設定に

1
2
3
4
/* #omni */
body[data-mode="omni"] {
 opacity: 0.8;
}

という設定を加えることで半透明にします。

20250713_vomnibar.jpg

こんな感じ。

Characters used for link hintsの設定を

1
hjklasdfgyuiopqwertnmzxcvb

に。元々は

1
sadjklewcmpgh

だけですが、使いやすいように。

戻る/進むの文字列の追加

[[]]でページに愛に有るprevnextといった文字のリンクに進むことが出来るようになっていますが、 この文字列の設定がデフォルトだと英語と中国と記号、といった感じになってるので日本語を追加します。

Previous patterns

1
上一封,上页,上一页,上一章,前一页,上一张,prev,previous,back,older,<←,«,≪,<<,前へ,戻る,前のページ

Next patterns

1
下一封,下页,下一页,下一章,后一页,下一张,next,more,newer,>,›,→,»,≫,>,次へ,進む,次のページ

それぞれ、前へ, 次へ以降のものが追加したもの。

キーボードショートカット

WindowsやLinuxで、上記のマッピングのように<c-n>を設定しようとしても効かずにChromeの下の新しいウィンドウを開くの動作が出てしまいます。

Why can’t I remap Ctrl-N and similar keys on Linux and Windows?

このキーを右のタブに移るnextTabに設定したいのですが、 この動作に関しては拡張機能の設定でキーボードショートカットへ行くと、Vimium Cの設定もあり、 その中にGo one tab rightという項目があるのでここにCtrl+Nを設定することで <c-n>で右のタブに移ることが出来るようになります。

ついでにCtrl+Pも左のタブに移るGo one tab leftに設定しておきます。

20250713_keyboardshortcut.jpg

ここで設定するとメリットもあって、Chromeのより上流の設定になるので 通常Vimium Cが無効になるChromeのウェブストアのページなどでも動作する状態になります。 なのでmacOSでもこちらでやっておくことにします。

他のhistoryやreloadなどもそういったページで動作させたい場合はここでキー設定をしておくと出来るようになります。

あと、場合によっては別の拡張機能がこのキーボードショートカットで上書きしてることもあって、 拡張機能のオプションでショートカットが見つからずに変更できないという場合もあるので、 キーボードショートカット一覧をチェックして必要なら別の拡張機能のショートカットも変更しておくと良いです。

Windows, AutoHotkeyの設定

検索キー

Windowsの場合、

1
2
3
#HotIf WinActive("ahk_exe chrome.exe")
!f::SendInput "!fff"
#HotIf

のような設定をAutoHotkeyでしています。

これはCtrl-FscrollFullPageDownに設定しているので 代わりの検索キーです。

Vimium Cの機能でも/で検索が出来ますが、 サイトによってうまくいかなかったりする場合にChromeの検索だとうまくいくことがあるので一応すぐに使えるように。

cVimの場合だとGitHubなんかで/検索すると表示が崩れてましたが その点Vimiumでは問題なく動作しているので、検索に関してはVimiumの方が安定しているかも。

上のキーバインドがちょっとよくわからないものになってますが、

  • !f: Alt-Fでメニューにフォーカス
  • f: F検索と編集の項目にフォーカス
  • f: F検索を実行

という役割です。 Ctrl-Fが使えないのでメニューから実行のを変わりにやっていますが、 別の方法としてはAutoHotkeyで

1
2
3
4
#HotIf WinActive("ahk_exe chrome.exe")
!f::^f
^f::1f
#HotIf

のように交換しておいて、scrollFullPageDown<a-f>に設定する、という方法でも良いかもしれません。

進む、戻る

VimiumでもgoBack/goForwardというコマンドでブラウザ履歴の戻る、進むが出来き、 また拡張機能のキーボードショートカットでもGo back in history/Go forward in historyという項目で 設定することも出来ます。

ただ、この動作は他のアプリでもよく使うもので、さらにOS共通のショートカットの Alt-Left/Rightで 行えるのでAutoHotkeyで設定してあります。

1
2
3
#HotIf
^o::SendInput "!{Left}"
^i::SendInput "!{Right}"

これであればChromeのウェブストアのページなどでも動作するという利点もあり、 エクスプローラーなどでもCtrl-Oで戻る、なども出来るようになります。

ただ、一つ欠点として、これらのキーが潰れるので、必要であれば特定のアプリだけで使うようにした方が良いかもしれません。 自分的にはターミナル上での作業でも特に使わなくても困らないので全体設定にしてあります。

一つ被るものとしてはMicrosoft IMEで、Ctrl-Iがカタカナに変換、のキーになっている点。 Google日本語入力を使ってますがMS IMEの設定ベースのキーを使っているので同様にCtrl-Iを使います。 たまに使うので使えないと面倒なので、

1
2
#HotIf
!i::^i

としてAlt-Iでカタカナ変換出来るようにしてあります。

これに関してはIMEの設定で変更することも出来ますが、 変更する方を統一しておきたいのでAHKで変更してあります。

macOS, Karabiner-Elementの設定

検索キー

macOSの場合には元々ブラウザの検索はCmd-Fなので<c-f>を設定してもそのままで大丈夫です。

進む、戻る

macOSではChromeやFinderではCommand-[/]で戻る、進むが出来るので これを設定します。

Wndows同様IMEの問題があるのでこちらもCommand-Iでカタカナ変換が出来るようにしておきます。

この設定は

Karabiner-Elements complex_modifications rules by rcmdnk

からPersonal SettingsをImportすると

Next/Prev by Ctrl-i/o, Ctrl-left/right arrow、及び Cmd-i as Ctrl-i, for IME katakanaという設定があるのでそれを有効にすることで設定が出来ます。

Sponsored Links
Sponsored Links

« c/ua (lume)を使ってmacOSの仮想環境を作る

}