Macの操作をkeyboardのみで完結させたい(vimium解説&設定ファイル紹介)


# はじめに
vimが好きな方の中には、vimの操作方法で全てを操作したいと思っている方もいると思います。
自分もその中のひとりです。

今回はキーボード操作で全てを完結したい自分が
vimiumとmacでのショートカットキーを紹介したいと思います。

# vimum

## vimiumとは?
vimiumとは、google chromeをvimのキーバインドで操作できる拡張機能になります。

こちらからインストール
https://chrome.google.com/webstore/detail/vimium/dbepggeogbaibhgnhhndojpepiihcmeb?hl=ja

## vimium設定

[Chromeをvimライクに使えるようにするvimium - vimiumの設定](https://qiita.com/satoshi03/items/9fdfcd0e46e095ec68c1#vimium%E3%81%AE%E8%A8%AD%E5%AE%9A)

極力、標準のvim操作になるように寄せた設定になっています。

```:vimium設定ファイル
# Insert your preferred key mappings here.

unmapAll

map j scrollDown
map k scrollUp
map gg scrollToTop
map G scrollToBottom
map <c-u> scrollPageUp
map <c-d> scrollPageDown
map - scrollFullPageDown
map - scrollFullPageUp
# map h scrollLeft
# map l scrollRight
map r reload
map yy copyCurrentUrl
map p openCopiedUrlInCurrentTab
map P openCopiedUrlInNewTab
map i enterInsertMode
map v enterVisualMode
map gi focusInput
map f LinkHints.activateMode
map F LinkHints.activateModeToOpenInNewTab
map - LinkHints.activateModeToOpenInNewForegroundTab
map gf nextFrame
map gF mainFrame

# Using the vomnibar

map o Vomnibar.activate
map O Vomnibar.activateInNewTab
map b Vomnibar.activateBookmarks
map B Vomnibar.activateBookmarksInNewTab
map T Vomnibar.activateTabSelection
map / enterFindMode
map n performFind
map N performBackwardsFind

# Navigating history

map h goBack
map l goForward

# Manipulating tabs

map t createTab
map gT previousTab
map H previousTab
map gt nextTab
map L nextTab

map ^ visitPreviousTab
map g0 firstTab
map g$ lastTab
map yt duplicateTab
map <a-p> togglePinTab
map <a-m> toggleMuteTab
map x removeTab
map u restoreTab

# Miscellaneous

map ? showHelp
```


## 主に使う操作

### 画面スクロール
|操作キー|アクション|
|-----------------|------------------|
|j|画面上スクロール|
|k|画面下スクロール|
|gg|画面トップ|
|G|画面最下部|
|ctrl-u|半画面上へ|
|ctrl-d|半画面下へ|

vimium標準では`u, d`単体で半画面スクロールなのですが、
vimでは`ctrl-u, ctrl-d`で半画面スクロールなので
vim操作に合わせるような設定になっています。

```:設定ファイル抜粋
map j scrollDown
map k scrollUp
map gg scrollToTop
map G scrollToBottom
map <c-u> scrollPageUp
map <c-d> scrollPageDown
```


### タブ移動

|操作キー|アクション|
|-----------------|------------------|
|t|新しくタブを開く|
|gT|タブ左移動|
|H|タブ左移動|
|gt|タブ右移動|
|L|タブ右移動|
|x|現在開いているtab削除|
|u|消してしまったtab復元|

```設定ファイル抜粋
map t createTab
map gT previousTab
map H previousTab
map gt nextTab
map L nextTab

map x removeTab
map u restoreTab
```


### 戻る, 進む

|操作キー|アクション|
|-----------------|------------------|
|h|ブラウザ戻る|
|l|ブラウザ進む|

デフォルトでは`h, l`は、右スクロールや左スクロールに割り当てられていますが、
使用頻度も低いため、戻るや進むに割り当てています。

```
map h goBack
map l goForward
```


### その他

|操作キー|アクション|
|-----------------|------------------|
|/|ブラウザ内検索|
|n|検索結果次へ|
|N|検索結果前へ|
|o|google検索して現在のtabで開く|
|O|google検索して新しいtabで開く|
|b|bookmark内で検索して現在のtabで開く|
|B|bookmark内で検索して新しいtabで開く|
|T|現在開いているtab内で検索して移動する|

タブ移動が面倒臭くなっても、
名前さえ覚えていれば`T`で名前検索して移動できるのですごく便利です。

```
# 検索系
map / enterFindMode
map n performFind
map N performBackwardsFind

# その他
map o Vomnibar.activate
map O Vomnibar.activateInNewTab
map b Vomnibar.activateBookmarks
map B Vomnibar.activateBookmarksInNewTab
map T Vomnibar.activateTabSelection
```


# おまけ

以上の操作ができれば、
ブラウザの操作はほとんどkeyboardで完結できると思われます。

自分が業務でよく使うのはターミナルとブラウザとslackなので
アプリ間の移動をするために、

`command + tab`で移動を行います。

<img width="844" alt="スクリーンショット 2020-05-31 0.15.50.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/260131/8cb5cd0d-c58f-2489-3712-6256bd3b3127.png">

これでキーボードでの操作だけでほとんどの操作をカバーすることができます。

あとはslackの操作を良い感じにすることができれば、キーボードだけでの生活が送れると思います...。