Vimperator を使っていると,ときどき勝手に "IGNORE ALL KEYS" と表示され Vimperator のキー入力を受け付けなくなる時があります.これは不便なので,.vimperatorrc に設定を追加してこの現象を回避します.
問題の再現
Vimperator を使っていると,意図しないタイミングで自動的に ignore モード(と呼ぶのでしょうか?ステータスバーに "IGNORE ALL KEYS (Press <S-Esc> or <Insert> to exit)" と表示されるアレです)に切り替わってしまい,Vimperator のキー入力を受け付けなくなる時があります.
いろいろなサイトにアクセスして ignore モードに切り替わる条件を調べてみると,どうやらパーセントエンコーディングを含む URL のサイトにアクセスしたときに切り替わるようです.例えば,日本語を含むキーワードで Google 検索した場合や,日本語タイトルの Wikipedia の記事へアクセスした場合などに,自動的に ignore モードに切り替わります.
問題を回避する設定
.vimperatorrc
に以下の autocmd
を追加します.
autocmd LocationChange .* js modes.passAllKeys = false
追加したら :source ~/.vimperatorrc
で設定を読み込みます.
解説
全てのページについて,ページを開くときに ignore モードを解除するようなコマンドを自動的に実行できれば,この問題はとりあえず解決できます.先ほどの設定はそれを行うためのものです.
autocmd
はイベントが発生したときに実行するコマンドを登録します.
autocmd {バインドするイベント} {コマンドを実行する URL のパターン} {実行するコマンド}
バインドするイベントに LocationChange
を指定しているので,ページを遷移したときにコマンドが実行されます.URL には .*
を指定しているので,すべての URL においてコマンドが実行されます.実行するコマンドの先頭に js
を指定しているので,コマンドは Javascript として実行されます.実行するコマンドには modes.passAllKeys = false
を指定しているので,キー入力を無視しない(ignore モードにしない)よう設定されます.
問題の起こる環境
勝手に ignore モードに入る問題の原因がバグなのか設定のせいなのかアドオンが干渉しているのかさっぱりわからないので,僕がこの問題に直面した環境を晒しておきます(ググっても解決策はおろか同じ問題に直面している人すらほとんど見かけなかったので,Vimperator を使っている全ての人に起こりうる問題ではないのかもしれません).
アプリ | バージョン |
---|---|
Firefox | 35.0 |
Vimperator | 3.8.3 |
Stylish | 2.0.1 |
セッションマネージャ | 0.8.1.6 |
DOM Inspector | 2.0.15 |
highlight Hint font-family: monospace; font-size: 16px; font-weight: bold; text-transform: uppercase; color: white; background-color: red; border-color: ButtonShadow; border-width: 0px; border-style: solid; padding: 0px 1px 0px 1px;
set defsearch=gg
set complete=s
autocmd LocationChange .* js modes.passAllKeys = false