理系学生日記

おまえはいつまで学生気分なのか

忍者TOOLS

快適なインターネットライフを実現するVimperator

年末ですし dot files も整理しなきゃならんなーということで、クリーンインストールした MBP を対象にして Emacs をはじめとする設定ファイル群を整理しているんですが、インターネットができなければ人間は死ぬ、ということで、Vimperator の設定ファイルである vimperatorrc から整理に入りました。
2014 年末にまだ Vimperator か、という話もあるのかもしれせんが、ぼくは Vimperator を失くしてしまうと作業効率が著しく落ちますし、それが Chrome に乗り換えられない理由の第一位です。

Vimperator とは何ぞや、という方は wikipedia:Vimperator を参照して頂ければある程度の感覚は掴めるのではないかと思います。要するに、「vi と同じ感覚でブラウザを操作するための」Firefox 拡張であり、結果として「マウスにほぼ一切触らない」インターネットライフを実現します。
さらに、Vimperator に対する拡張も JavaScript で記述することができ、Vimperator に実装されている「Command Mode」からもそれらを呼び出すことができたりして、非常に拡張性の高いソフトウェアになっています。

といっても、なかなかイメージが伝わらないと思うので、こちらのムービーをご覧ください(ぼくも YAPC で初めて動いているものを見てから一瞬でファンになりました)
ここでは、マウスに一切触れることなく、

  1. Google で Hacker news を検索し、
  2. Hacker news に遷移し、
  3. Command Mode から、英単語を Alc で検索する
  4. タブをブログのタブに移動させて
  5. テキストボックスの内容を Emacs に連携する

ということをやっています。

ゆっくり目に操作してますが、ホームポジションから基本的に手を離さなくて良いので、実際にはもっとサクサクとしたインターネットライフが実現できます。

わりと色んなところから設定を拝借しましたが、今の設定ファイルはこんなかんじ。

""" 動作設定
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"" 検索時、大文字が含まれている場合にのみ case sensitive にする
set ignorecase
set smartcase
"" 入力欄に自動フォーカスしない
set focuscontent
"" エラー時にベルを鳴らさない
set noerrorbells
"" 補完の候補はサーチエンジンと履歴に限定 (s: search engine, l: location bar entries)
set complete=sl
""" Editor に emacsclient を設定
set editor='/Applications/Emacs.app/Contents/MacOS/bin/emacsclient'
""" Firefox 設定変更
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"ページのアクセスキーを無効化
set! ui.key.contentAccess=0
" ダウンロードウィンドウを完了後自動で閉じる
set! browser.download.manager.closeWhenDone=true
" アドオンインストール時の待ち時間カット
set! security.dialog_enable_delay=0
" 前回のブラウザセッションを復元する
set! browser.startup.page=3
""" キー設定
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" vimperator と skk を共存させるために vimperator 側で <C-j> を無効化する
map <C-j> <Nop>
cmap <C-j> <Nop>
" l で次のタブに、h で前のタブに移動できるようにする
nnoremap l gt
nnoremap h gT
" j/k のスクロール幅を変更
nnoremap j 5j
nnoremap k 5k
" セミコロンで Command Mode に遷移
noremap ; :
" ブラウザ再起動
nnoremap <C-r> :restart<CR>
" Google で検索 (s twitter で "twitter" を検索できるように)
noremap s :open<Space>google<Space>
noremap ,s :tabopen<Space>google<Space>
" ダウンロードタブを表示
noremap <C-d> :downloads<CR>
" セッションを保存して Firefox を狩猟
noremap <C-q> :wqall<CR>
""" 見た目
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
"" ビシュアルベルを表示しない
set visualbell
highlight Bell display:none
"" ヒントラベルに表示される文字種を英小文字に設定
set hintchars="abcdefghijklmnopqrstuvwxyz"
"" 表示する GUI 要素はタブとナビゲーションバーのみ
set gui=none,tabs,navigation
"" ヒントの見た目を変更
highlight Hint font-family: Arial; font-size: 16px; font-weight: bold; text-shadow: -1px -1px 2px black, 1px -1px 2px black, -1px 1px 2px black, 1px 1px 2px black; color: #33cccc;
highlight HintElem color: gray; background-color: #a1e4e6;
highlight HintActive color: black; background-color: #ff8700;
"" エラーメッセージ
highlight ErrorMsg color:white; background-color: #ec6aa1;
""" QuickMark
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
:qmark l http://reader.livedoor.com/
:qmark f https://www.facebook.com/home.php
:qmark n http://www.nicovideo.jp/
:qmark k http://kiririmode.hatenablog.jp/
:qmark p http://getpocket.com/a/queue
""" plugins
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
loadplugins
"" FeedSomeKeys_3.js
""""""""""""""""""""""""""""""""""""""""
" lazy コマンドを定義
command! -nargs=+ lazy autocmd VimperatorEnter .* <args>
" livedoor reader で本来のキーボードショートカットを有効にする
:lazy fmaps -u='(fastladder|livedoor)\.com/reader' j k s a p o v c i,p <Space> <S-Space> z b < > q w e,g
"" multi_requestor.js
""""""""""""""""""""""""""""""""""""""""
" alc を参照する
noremap <C-t> :mr<Space>alc<Space>
""" 完了処理
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
echo "vimperatorrc loaded."