The default Vimium1 bindings are meant to resemble their vim-counterparts as closely as possible, which helps with learning them if you are coming from vim. However, taken for itself, these defaults are not great: the default keymaps often tend to map common actions to key sequences even though there are many unused keys. For instance, "Goto Next Tab" is bound to gt
like in vim, even though the action is so common in the browser that it warrants a single key.
Similar to my Motion Setup regarding hjkl, I experimented with keybindings and came up the following core mappings which I am very happy with. The basic idea is to assign all common actions to a single home row keys, using vim's hjkl
for controlling the page with the right hand, and wasd
commonly known from PC-gaming for controlling tabs with the left hand.
1" right: hjkl – Page Control
2map j scrollDown
3map k scrollUp
4map h goBack
5map l goForward
6
7" left: wasd – Tab Control
8map a previousTab
9map d nextTab
10map s copyCurrentUrl
11
12map w removeTab
13map q closeTabsOnLeft
14map e closeTabsOnRight
You can find my full vimium-c config here, if you are interested.