FirefoxにVimperatorの設定をして、かつ高速化を頑張ってみた
最近になってようやくvimperatorを入れた。
私はemacsが好きなのでvimperatorを使うのは「なんとなくちがうな」と思っていたのですが、使ってみるとかなりいいです。
vi系のキーバインドは、エディタだとコーディングが主なのでインサートモードに移行するのがいちいちめんどくさかったんですが、
ブラウザだと画面の操作が主なので特に不便はなしという感じです。
むしろブラウザの下部にコマンドが表示されるのがCUIエディタを使う人は皆しっくりくるはず。
あとキーバインドは設定で少しいじって、KeyRemap4MacBookのEmacs Modeと併用することですこしemacs-likeになりました。
vimpratorのインストール
https://addons.mozilla.org/ja/firefox/addon/4891からインストールしてFirefoxを再起動してください
もしTabMixPlusを入れている場合は
「ツール」→「TabMixPlusのオプション」→「マウス」→「マウスジェスチャー」→「クリックでタブを選択する場合、ボタンを離すまで選択しない」のチェックボックスをOFFにしないとマウスでタブを選択できませんでしたので設定を変えておくことをおすすめします。
設定ファイルとプラグインフォルダを作成
設定ファイルとプラグインを置くフォルダを作成します。
ちなみにWindowsはHomeを環境変数に定義したりとかしないといけないらしいですが当方MACのため割愛します
touch ~/.vimperatorrc mkdir ~/.vimperator/plugin # => plunginとなっていたのを、コメントをいただいて修正しました。
設定ファイル
" ===================== " ==Common============= " ===================== " ブラウザタイトルの変更 " Firefox デフォルトは 「Mozilla - Firefox」、vimperatorを入れると「vimperator」 set titlestring=Firefox "エラー時のビープ音をビジュアルベルに set visualbell "詳細表示行数(最大値=9) set verbose=9 ":[tab]open時の補完設定(s=検索エンジン+キーワードURL,S=サジェストエンジン,l=ロケーションバーの補完機能を利用,b=ブックマーク) set complete=sS "デフォルト検索エンジン(検索バーの管理→キーワードでgoogleをgに変更しておく) set defsearch=g "サジェストエンジンの設定 set suggestengines=g "コマンド入力時にコマンド名を自動補完 set wildoptions=auto " ページロード時にテキストボックスにフォーカスするのを防ぐ set focuscontent "検索語のハイライト set hlsearch "開いているページが1つならタブ非表示 set showtabline=1 "履歴を保存 set history=100 "以下のとき新しいタブで開く set activate=homepage,quickmark,tabopen,paste " ツールバーを表示 set guioptions=Trb " ===================== " ==Key-Bind=========== " ===================== "ロケーションバーにフォーカス map <C-l> <A-d> "各種バー表示をトグル noremap <C-1> :set guioptions="" noremap <C-2> :set guioptions=Brb noremap <C-3> :set guioptions=Trb " 選択文字列のコピーを <C-w> に割り当て map <C-w> :echo Yank!<CR>Y " j/k でのスクロール幅変更 map j 5<C-e> map k 5<C-y> " Backspace に戻るを割り当て map <C-h> <A-Left> " h/l に戻るや進むを割り当て map h <A-Left> map l <A-Right> map <M-n> <A-Right> map <M-p> <A-Left> " H/L や ← → でタブ移動 map H gT map L gt map <Left> gT map <Right> gt " Shift + ← → で現在のタブの位置変更 map <S-Right> :tabmove! +1<CR> map <S-Left> :tabmove! -1<CR> " bookmarkをbで開けるようにする map b :bmarks!<Space> map <M-x> : map t :tabopen<Space>g<Space> map o :open<Space>g<Space> " ===================== " ==plugin============= " ===================== " feedSomeKeys_2.js " http://coderepos.org/share/browser/lang/javascript/vimperator-plugins/trunk/feedSomeKeys_2.js autocmd LocationChange .* :fmapc " googlereaderでショートカットを有効にする autocmd LocationChange 'www\.google\.co\.jp/reader' :fmap! -vkey j k n p m s t v A r S N P X O gh ga gs gt gu u / ? " livedoorReaderでショートカットを有効にする autocmd LocationChange 'reader\.livedoor\.com/reader' :fmap j k s a p o v c <Space> <S-Space> z b < > " migemo-hint.js set hintmatching=custom " char_hints_mod2.js " hintは小文字の英字で表示(絞り込みをしたい場合はIOにかえる) let g:hintsio="io" let g:hintchars="HJKLASDFGYUIOPQWERTNMZXCVB" " lookupDictionary.js map e :eijiro<Space> " ===================== " ==style============== " ===================== " vimperatorのコマンドライン時はimeをOFFにする " http://vimperator.g.hatena.ne.jp/teramako/20090311/1236776437 :style -name commandline-ime chrome://* #liberator-commandline-command input {ime-mode: inactive;} " 表示スタイル " http://d.hatena.ne.jp/lillilife/20090423/1240489978のhintスタイルを変更したものを使用 " ==Vimperator_Color_Scheme== " name: BrewBlue " ==Mono_Color_Scheme== " hi Hint color: #333333; background: White; font-size: 14px; font-family: Consolas, Osaka, monospace, monospace; font-weight: bold; padding: 0px 2px; border: 3px outset #ddd; opacity:0.80; " hintのスタイルを変更 hi Hint font-family: "Bitstream Vera Sans Mono",monaco,monospace; font-size: 12px; font-weight: bold; color: white; background-color: green; border-color: ButtonShadow; border-width: 0px; border-style: solid; padding: 2px; line-height: 1em; hi HintElem color: Black; background: PowderBlue; hi HintActive color: White; background: SteelBlue; "hi StatusLine color: #333333; background: #eeeeee; font-size: 10pt; font-family: Consolas, Osaka, monospace, monospace; "hi StatusLineBroken color: #333333; background: #ff6060; font-family: Consolas, Osaka, monospace, monospace; "hi StatusLineSecure color: #333333; background: #aacf53; font-family: Consolas, Osaka, monospace, monospace; hi Normal color: SkyBlue; background: #333; font-size: 9pt; font-family: Consolas, Osaka, monospace, monospace; hi InfoMsg color: SkyBlue; background: #333; font-size: 9pt; font-family: Consolas, Osaka, monospace, monospace; hi ModeMsg color: SkyBlue; background: #333; font-size: 9pt; font-family: Consolas, Osaka, monospace, monospace; hi MoreMsg color: SkyBlue; background: #333; font-size: 9pt; font-family: Consolas, Osaka, monospace, monospace; hi LineNr color: DodgerBlue; background: #333; font-size: 9pt; font-family: Consolas, Osaka, monospace, monospace; hi Question color: LightYellow; background: #333; font-size: 9pt; font-family: Consolas, Osaka, monospace, monospace; hi WarningMsg color: DeepPink; background: #333; font-size: 9pt; font-family: Consolas, Osaka, monospace, monospace; hi Keyword color: CornflowerBlue; font-size: 9pt; font-family: Consolas, Osaka, monospace, monospace; hi Tag color: CornflowerBlue; font-size: 9pt; font-family: Consolas, Osaka, monospace, monospace; hi NonText background: #333; hi Null color: SkyBlue; hi Filter color: #aacf53; font-weight: bold; hi CompTitle color: DodgerBlue; background: Black; font-weight: bold; font-family: Consolas, Osaka, monospace, monospace; hi CompResult width: 45%; overflow: hidden; font-family: Consolas, Osaka, monospace, monospace; hi CompDesc width: 50%; font-family: Consolas, Osaka, monospace, monospace; hi CompItem font-family: Consolas, Osaka, monospace, monospace; hi CompItem[selected] color: #aacf53; background: #555; font-weight: bold; font-family: Consolas, Osaka, monospace, monospace; hi Gradient height: 1px; margin-bottom: -1px; margin-top: -1px; hi GradientLeft background: #aacf53; hi GradientRight background: #333333; hi Title color: SkyBlue; hi Indicator color: DodgerBlue; hi String color: DeepPink; hi Number color: DeepPink; hi Object color: Khaki; hi Function color: DeepSkyBlue; hi URL color: PowderBlue; hi TabNumber color: White; font-weight: bold; font-size: 10pt; font-family: Consolas, Osaka, monospace, monospace; style -name tab chrome://* <<EOM #liberator-statusline { font-family: Consolas, Osaka, monospace !important; font-weight: normal !important; font-size: 10pt !important; padding:3px 0 !important; } .tabbrowser-tab { font-size: 12px; font-weight: normal; text-align: left !important; } #status-bar statusbarpanel { padding: 0 1px !important; } statusbarpanel > * { margin: 0 !important; padding: 0 !important; } EOM " 読み込んだ事を出力 " vim: set ft=vimperator:
その他Add-onのインストール
migemo関係を使うためにXUL/Migemoを
https://addons.mozilla.org/ja/firefox/addon/5239
からインストールします。
プラグインのダウンロード
以下のプラグインを使用しましたのでさっき作ったフォルダにダウンロードします。
- char-hints-mod2.js
- hintを英字に変更してくれる
- feedSomeKeys_2.js
- LDRやGoogleReaderでキーバインドを一部替えたり無効にしたりできる
- migemo-find.js
- サイト内検索でimeをONにしなくても日本語を検索できる
- migemo_hint.js
- hintを絞り込む際にimeをONにしなくても日本語を絞り込める
- migemo_completion.js
- その他各種検索をimeをONにしなくてもry
- commandBookmarklet.js
- BookMarkLetをコマンドに替える
- lookupDictionary.js
- 英辞郎をコマンドラインから使える
- walk-input.js
でフォームのインプットに直接移動
高速化のために
以下のAdd-onを入れるとSqliteのreindexをかってにしてくれるようになるので高速に動くようになります。
ただし実験的Add-onのため自己責任で使ってください
Ramdiskを作成してキャッシュをそこに吐くようにすると少し改善されます。
http://www.moongift.jp/2008/12/ramdisk_on_menubar/を使用するとRamdiskの作成とサイズ変更が楽になります
Ramdiskを作ったら/Users/username/Library/Application Surpport/Firefox/Profiles/******.default/配下にuser.jsというファイルを作成し以下の記述をします
user_pref("browser.cache.disk.parent_directory","/Volumes/RamDisk");