読者です 読者をやめる 読者になる 読者になる

scramble cadenza

技術ネタのガラクタ置き場

キーボードのみでブラウザを操作するmy設定を晒してみる

イントロ

意外とキーボード操作系の記事って少ないんですよね。
ブラウザって絶対なくならないものだし、ゴリゴリと特化させた各人のスタイルがあっていいと思います。
公開すると誰かが「こういうの試してみよう」とか思う人がいるわけで。
emacsvim などの editor だけでなく、ブラウザにもこういう文化がもっとほしいですなぁと常々感じてました。

そんなこと言う私は全然特化してないんですが、言い出しっぺの法則というわけで、「キーボード操作」に絞った自分のブラウザ設定を晒してみます。
(記事の最後に設定ファイル書いてます)

何を使ってるの?

あ、使ってるブラウザは chrome です。

どういう風に使ってるの?

よく使うのは以下の操作です。
詳しくは設定ファイルを見てください。
キーバインド割り当ては変更することは、いくらでも可能です。

  • google検索したい
    • s (search)
    • 続けてキーワード入れると、google検索結果を新しいタブで開く
  • Hit-a-Hintを使いたい
    • e / C-e (keysnail に合わせた)
    • i, l は見分けづらいので、ignore
  • ページ内検索(migemo)したい
    • C-s / C-r
    • 閉じるときは C-m (G-g は競合してしまう)
  • tab をサーチして選択
    • t (tab)
    • 続けてキーワード入れて、マッチしたタブを選択する
  • tab 移動
    • h / l
    • ブラウザ標準の C-{ / C-} もよく使う
  • 閉じたタブをもとに戻す
    • u (undo)
  • 戻る/進む
    • b / n (back/next)
  • title/url のコピー
    • W / w (時々失敗するけど便利)
  • 入力できる最初の場所を選択
    • f (forcus)
  • コマンドボックスを閉じる
    • C-g

各種設定

どうして vichrome を使うか、は色々あるのですがそれは別の機会に。
とにかく優秀ですが、弱点として SearchMode にバグがあるので、そこは MigemoFindInPage にアウトソースしています。

vichrome
## global settings

# EscapeをC-gで
nmap <C-g> :Escape
imap <C-g> :Escape
cmap <C-g> :Escape
emap <C-g> :Escape


## nmap keybinds

# タブ操作
nmap l :TabFocusNext
nmap h :TabFocusPrev

# GoCommandMode
nmap <A-x> :GoCommandMode

# 開いている tab を search し jump
nmap t :ShowTabList

# 戻る & 進む
nmap b :BackHist
nmap n :ForwardHist

# google search
nmap s :TabOpenNew -i g

# bookmark search
nmap S :TabOpenNew -b

# forcus
nmap f :FocusOnFirstInput

# スクロール関連をなるべくemacs風に
nmap <C-n> :ScrollDown
nmap <C-p> :ScrollUp
nmap <C-v> :PageDown
nmap <A-v> :PageUp
nmap <A-<> :GoTop
nmap <A->> :GoBottom

# URLをコピー
nmap w :Copy '%url'
nmap W :Copy '%title'

## mappings for opening your favorite web page
nmap <Space>t :TabOpenNew https://www.twitter.com
nmap <Space>f :TabOpenNew https://www.facebook.com/
nmap <Space>m :TabOpenNew https://mail.google.com/mail/#inbox
nmap <Space>a :TabOpenNew https://maps.google.co.jp/
nmap <Space>e :TabOpenNew chrome://extensions/
nmap <Space>o :TabOpenNew chrome://settings/browser
nmap <Space>d :TabOpenNew chrome://downloads
nmap <Space>h :TabOpenNew chrome://history
nmap <Space>g :TabOpenNew http://www.google.com/

# f-Mode
nmap e     :GoFMode
nmap <C-e> :GoFMode --newtab --continuous


## cmap keybinds

# コマンド上での選択移動
cmap <C-n> :FocusNextCandidate
cmap <C-p> :FocusPrevCandidate


## pagecmd keybinds
# タブ移動
pagecmd * nmap l :TabFocusNext
pagecmd * nmap h :TabFocusPrev

# almost all Vichrome functions don't work properly for pdf contents
# so it's useful to enable default key bindings for pdf file.
pagecmd *.pdf nmap <C-f> <NOP>


## aliases

alias extentions TabOpenNew chrome://extensions/
alias extention TabOpenNew chrome://extensions/
alias ext TabOpenNew chrome://extensions/
alias option TabOpenNew chrome://settings/browser
alias opt TabOpenNew chrome://settings/browser
alias downloads TabOpenNew chrome://downloads
alias history TabOpenNew chrome://history
alias hist TabOpenNew chrome://history
alias manual TabOpenNew http://github.com/k2nr/ViChrome/wiki/Vichrome-User-Manual
alias man TabOpenNew http://github.com/k2nr/ViChrome/wiki/Vichrome-User-Manual
alias config TabOpenNew chrome-extension://gghkfhpblkcmlkmpcpgaajbbiikbhpdi/options.html
alias conf TabOpenNew chrome-extension://gghkfhpblkcmlkmpcpgaajbbiikbhpdi/options.html
alias cnf TabOpenNew chrome-extension://gghkfhpblkcmlkmpcpgaajbbiikbhpdi/options.html
alias o TabOpenNew
alias x TabCloseCurrent
alias new TabOpenNew chrome-internal://newtab/

## NOP keybinds

# C-d default page half down
nmap <C-d> <NOP>
# C-u default page half up
nmap <C-u> <NOP>
# C-f default page Down
nmap <C-f> <NOP>
# C-y default ScrollUp
nmap <C-y> <NOP>
# yy default copyurl
nmap yy <NOP>
# gt default TabFocusNext
nmap gt <NOP>
# gT default TabFocusPrevious
nmap gT <NOP>
# i default FocusOnFirstInput
nmap i <NOP>
# / default GoSearchModeForward
nmap / <NOP>
# ? default GoSearchModeBackword
nmap ? <NOP>
# N default PrevSearch
nmap N <NOP>


## DISCARD keybinds
nmap <BS> <DISCARD>
MigemoFindInPage
  • ChromeMigemo が前もって必要なので入れる。
  • /Users/{your_user_name}/Library/Application\ Support/Google/Chrome/Default/Extensions/fojbanjemmcmjomadodejdophegjdpkc/0.0.2_0/content.js を開く
  • 定数を次のように修正、保存
    • ACTIVATE_KEY = 10083 // C-s
    • FIND_NEXT_KEY = 10083 // C-s
    • FIND_PREV_KEY = 10082 // C-r
  • 定数のルールは KeyCode でぐぐるとなんとなくわかります。

まとめ

勢い余って長くなってしまった...
要するに 「emacs っぽく chrome を使えるようにしていますよー」という紹介でした。

今のところ大きい不満はなく快適に過ごしています。

参考にさせていただいたサイト

ChromeでMigemoを使いEmacs風のキーバインドにする
Vichromeはじめました – DS LAB.