vimperator 1.2pre が気持ちよすぎる件について
vimperatorとは
vimperatorのヘルプから引用すると↓こんな感じ。
はじめに導く者(Navigator)あり、のちに冒険者(Explorer)現る。 やがて征服者(Konqueror)がやってきた。 そしてついに...皇帝(Imperator)、Vimperatorの時代が到来した ヘルプ(:h)より
一言でいってしまうと、vimの操作感でFirefoxを操作してしまおう!
というアドオンです。
vimperator (http://vimperator.mozdev.org/)
実際に使ってみて
エントリのタイトルにも書いたとおり、気持ちよすぎます><
何が気持ちいいかというと、
キー | 動作 |
---|---|
hjkl | ページ内移動 |
戻る | |
進む | |
左のタブをアクティブ | |
右のタブをアクティブ | |
/ | 検索 |
:t | 新しいタブで開く |
などなど今までマウスでやっていたことが全てvim-likeにキーボードでできます!
でもこれって初期状態
僕はあまりデフォルトのままというのは好きじゃないのでいろいろ
弄ってみることにします。
まずは設定ファイル「vimperatorrc」を$HOME*1に作成します。
臆面もなく晒すとこんな感じ。
"""""""""""""""""""""""""""""""""""""""" " マッピング " j/k でのスクロール幅を1行から5行に変更 map j 5<C-e> map k 5<C-y> " J/K をC-d/u互換に map J <C-d> map K <C-u> " C-h/l で選択タブ変更 " 前 noremap <C-l> gt " 後 noremap <C-h> gT " C-H/L でタブ位置変更 map <C-L> :tabmove! +1<CR> map <C-H> :tabmove! -1<CR> " コマンドモードでの操作 cmap <C-n> <Tab> cmap <C-p> <S-Tab> cmap <C-f> <Right> cmap <C-b> <Left> " Alt+↑/↓でメニューの表示/非表示 map <A-Down> :set guioptions+=mT<CR> map <A-Up> :set guioptions-=mT<CR> " ヤンク map <C-c> Y " c-jでEsc map <C-j> <C-[> imap <C-j> <C-[> cmap <C-j> <C-[> " . でタグリストを表示/非表示 map . :ls!<CR> " vimperator 1.2 06-17以降でOS側のショートカットが効かなくなったので代替 imap <C-f> <Right> imap <C-b> <Left> imap <M-v> <C-v><M-v> cmap <C-f> <Right> cmap <C-b> <Left> cmap <M-v> <C-v><M-v> " ! でページのCSSをon/off map ! :set invum<CR> """""""""""""""""""""""""""""""""""""""" " オプション " 起動時にメニューバーのみ表示 set guioptions=m " エラーコンソールに詳細表示 set verbose=9 " ビープ音を鳴らさないためにvisualbellを有効にする set visualbell " visualbell無効 set visualbellstyle = "" " Exコマンドと検索パターン履歴の記録数 set history=1000 " EXコマンドの表示を新しいタブに。 set newtab=all " デフォルトの検索エンジン set defsearch=google " 履歴とブックマークの最初の補完をスピード・アップ set preload " INSERTモードとTEXTEREAモードで<C-i> を押した時のエディタ set editor=D:\Tools\vim\gvim.exe -f " これらの機能で新規タブを開いた際はアクティブにする set activate=homepage,quickmark,tabopen,paste " ex mode でインクリメント補完 set wildoptions=auto " :[tab]open コマンドで補完する候補と順番 set complete=sbl " ブラウザタイトルの変更 set titlestring=Firefox " 常にタブを表示 set showtabline=2 " Hit-a-Hintのフォントを大きく set hintstyle+= font-size:15px; " ]]/[[ で次/前のページに移動 set nextpattern+=next, 次(の)?ページ,\b次.*,→\b,下一頁,Следующая,・、・隹€ set previouspattern+=prev, 前(の)?ページ,\b前.*,\b← """""""""""""""""""""""""""""""""""""""" " プラグイン " ime_controller.js let g:ex_ime_mode = "inactive" let g:textarea_ime_mode = "inactive" " migemo_hint.js set hintmatching=custom " googlesuggest.js map s :google<Space> " direct_bookmark.js let g:direct_sbm_use_services_by_tag = "dh" let g:direct_sbm_use_services_by_post = "dh" let g:direct_sbm_is_normalize = "false" let g:direct_sbm_is_use_migemo = "true" map B :bentry<CR> map a :sbm<CR> map A :sbm<Space> map ,a :btags<CR> " copy.js map c :copy<Space> js <<EOM liberator.globalVariables.copy_templates = [ { label: 'titleAndURL', value: '%TITLE% %URL%' }, { label: 'title', value: '%TITLE%' }, { label: 'url', value: '%URL%' }, { label: 'markdown', value: '[%TITLE%](%URL%)' }, { label: 'markdownsel', value: '[%SEL%](%URL% "%TITLE%")' }, { label: 'htmlblockquote', value: '<blockquote cite="%URL%" title="%TITLE%">%HTMLSEL%</blockquote>' } ]; EOM " Gmail js <<EOF autocommands.add('CurrentPageLoad,TabSelect',/mail\.google\.com\/(mail|a)\//,[ 'js plugins.feedKey.setup(', '"c / y j k n p o u e x s r a # [ ] z ? gi gs gt gd ga gc".split(/ +/).map(function(i) [i, "4" + i])', ');' ].join('')); EOF autocmd TabLeave https://mail\.google\.com/(mail|a)/ :fmapc " ステータスバーにfeedボタンを表示 " http://d.hatena.ne.jp/teramako/20071205/p1 js <<EOM (function(){ var feedPanel = document.createElement('statusbarpanel'); var feedButton = document.getElementById('feed-button'); feedPanel.setAttribute('id','feed-panel-clone'); feedPanel.appendChild(feedButton.cloneNode(true)); feedButton.parentNode.removeChild(feedButton); document.getElementById('status-bar').insertBefore(feedPanel,document.getElementById('security-button')); })(); EOM " ページのアクセスキーを無効化、他 js <<EOM liberator.options.setPref('ui.key.generalAccessKey', 0); liberator.options.setPref('browser.tabs.loadDivertedInBackground', false); EOM " 読み込んだ事を出力 echo ".vimperatorrc sourced" " autoIgnoreKey.js javascript <<EOM liberator.globalVariables.autoignorekey_pages = uneval([ /^https?:\/\/mail\.google\.com\//, /^https?:\/\/fastladder\.com\//, /^https?:\/\/reader\.livedoor\.com\/reader/, ]); EOM
入れてるプラグイン
-
- twitter.js
- twitterView.js
Twitterのタイムライン見たりPOSTしたり。
-
- walk-input.js
-
- autoIgnoreKey.js
特定のサイトでキーバインドがかぶらないように。
-
- copy.js
-
- direct_bookmark.js
はてぶ、del.icio.us、ライブドアReaderに同時にブックマークできる。
-
- googlesuggest.js
:googleでグーグルサジェストが使える!
-
- ime_controller.js
imeの状態を気持ちよくしてくれる。
-
- migemo_hint.js
fでHintを出したときに、ローマ字で日本語の絞込みができる、らしい*2。
追記(6/30)
-
- migemoが発動しない。
- ステータスバーにfeedボタンを表示できていない
などいくつかよくわからない部分があったので調べていたら以下のコードをコメントアウトしたら
ちゃんと動作するようになることがわかった。
" ]]/[[ で次/前のページに移動 set nextpattern+=next, 次(の)?ページ,\b次.*,→\b,下一頁,Следующая,・、・隹€ set previouspattern+=prev, 前(の)?ページ,\b前.*,\b←
完璧なまでにどっかのページからのコピペなので、何ゆえこんな文字がいっぱいあるかが
よくわからないままコメントアウト。
ていうかAutoPagalizeつかってるから気にしてなかった。。