Want to take your software engineering career to the next level? Join the mailing list for career tips & advice Click here


The hacker's browser.

Subscribe to updates I use vimium

Statistics on vimium

Number of watchers on Github 13734
Number of open issues 736
Average time to close an issue 4 days
Main language CoffeeScript
Average time to merge a PR 13 days
Open pull requests 97+
Closed pull requests 68+
Last commit about 2 months ago
Repo Created almost 11 years ago
Repo Last Updated 15 days ago
Size 5.51 MB
Organization / Authorphilc
Page Updated
Do you use vimium? Leave a review!
View open issues (736)
View vimium activity
View on github
Fresh, new opensource launches 🚀🚀🚀
Software engineers: It's time to get promoted. Starting NOW! Subscribe to my mailing list and I will equip you with tools, tips and actionable advice to grow in your career.
Evaluating vimium for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)

Vimium - The Hacker's Browser

Build Status

Vimium is a browser extension that provides keyboard-based navigation and control of the web in the spirit of the Vim editor.

Installation instructions:

Install via the Chrome web store or the Firefox Addons site.

To install from source, see here.

Vimium's Options page can be reached via a link on the help dialog (type ?) or via the button next to Vimium on the extension pages of Chrome (chrome://extensions) or Firefox (about:addons).

Keyboard Bindings

Modifier keys are specified as <c-x>, <m-x>, and <a-x> for ctrl+x, meta+x, and alt+x respectively. For shift+x and ctrl-shift-x, just type X and <c-X>. See the next section for how to customize these bindings.

Once you have Vimium installed, you can see this list of key bindings at any time by typing ?.

Navigating the current page:

?       show the help dialog for a list of all available keys
h       scroll left
j       scroll down
k       scroll up
l       scroll right
gg      scroll to top of the page
G       scroll to bottom of the page
d       scroll down half a page
u       scroll up half a page
f       open a link in the current tab
F       open a link in a new tab
r       reload
gs      view source
i       enter insert mode -- all commands will be ignored until you hit Esc to exit
yy      copy the current url to the clipboard
yf      copy a link url to the clipboard
gf      cycle forward to the next frame
gF      focus the main/top frame

Navigating to new pages:

o       Open URL, bookmark, or history entry
O       Open URL, bookmark, history entry in a new tab
b       Open bookmark
B       Open bookmark in a new tab

Using find:

/       enter find mode
          -- type your search query and hit enter to search, or Esc to cancel
n       cycle forward to the next find match
N       cycle backward to the previous find match

For advanced usage, see regular expressions on the wiki.

Navigating your history:

H       go back in history
L       go forward in history

Manipulating tabs:

J, gT   go one tab left
K, gt   go one tab right
g0      go to the first tab
g$      go to the last tab
^       visit the previously-visited tab
t       create tab
yt      duplicate current tab
x       close current tab
X       restore closed tab (i.e. unwind the 'x' command)
T       search through your open tabs
W       move current tab to new window
<a-p>   pin/unpin current tab

Using marks:

ma, mA  set local mark "a" (global mark "A")
`a, `A  jump to local mark "a" (global mark "A")
``      jump back to the position before the previous jump
          -- that is, before the previous gg, G, n, N, / or `a

Additional advanced browsing commands:

]], [[  Follow the link labeled 'next' or '>' ('previous' or '<')
          - helpful for browsing paginated sites
<a-f>   open multiple links in a new tab
gi      focus the first (or n-th) text input box on the page
gu      go up one level in the URL hierarchy
gU      go up to root of the URL hierarchy
ge      edit the current URL
gE      edit the current URL and open in a new tab
zH      scroll all the way left
zL      scroll all the way right
v       enter visual mode; use p/P to paste-and-go, use y to yank
V       enter visual line mode

Vimium supports command repetition so, for example, hitting 5t will open 5 tabs in rapid succession. <Esc> (or <c-[>) will clear any partial commands in the queue and will also exit insert and find modes.

There are some advanced commands which aren't documented here; refer to the help dialog (type ?) for a full list.

Custom Key Mappings

You may remap or unmap any of the default key bindings in the Custom key mappings on the options page.

Enter one of the following key mapping commands per line:

  • map key command: Maps a key to a Vimium command. Overrides Chrome's default behavior (if any).
  • unmap key: Unmaps a key and restores Chrome's default behavior (if any).
  • unmapAll: Unmaps all bindings. This is useful if you want to completely wipe Vimium's defaults and start from scratch with your own setup.


  • map <c-d> scrollPageDown maps ctrl+d to scrolling the page down. Chrome's default behavior of bringing up a bookmark dialog is suppressed.
  • map r reload maps the r key to reloading the page.
  • unmap <c-d> removes any mapping for ctrl+d and restores Chrome's default behavior.
  • unmap r removes any mapping for the r key.

Available Vimium commands can be found via the Show available commands link near the key mapping box on the options page. The command name appears to the right of the description in parenthesis.

You can add comments to key mappings by starting a line with " or #.

The following special keys are available for mapping:

  • <c-*>, <a-*>, <m-*> for ctrl, alt, and meta (command on Mac) respectively with any key. Replace * with the key of choice.
  • <left>, <right>, <up>, <down> for the arrow keys.
  • <f1> through <f12> for the function keys.
  • <space> for the space key.
  • <tab>, <enter>, <delete>, <backspace>, <insert>, <home> and <end> for the corresponding non-printable keys (version 1.62 onwards).

Shifts are automatically detected so, for example, <c-&> corresponds to ctrl+shift+7 on an English keyboard.

More documentation

Many of the more advanced or involved features are documented on Vimium's GitHub wiki. Also see the FAQ.


See CONTRIBUTING.md for details.

Release Notes

See CHANGELOG for the major changes in each release.


Copyright (c) Phil Crosby, Ilya Sukhar. See MIT-LICENSE.txt for details.

vimium open issues Ask a question     (View All Issues)
  • over 3 years Vimium not work when the internet is down
  • over 3 years Add a mention of *caret* mode to the shortcuts (Vimium Help) page
  • over 3 years Jumping to tab no. 2 or 3?
  • over 3 years Document the P key
  • almost 4 years Scroll distance is not consistent
  • almost 4 years Conflict between vimium and double authentication
  • almost 4 years Color the vimium icon based on the current 'mode'
  • almost 4 years Is it possible to define a command that only close the tab if it's not the last tab in the window?
  • almost 4 years This extension may have been corrupted.
  • almost 4 years Feature request: search for selection
  • almost 4 years Feature Request: open link in incognito window
  • almost 4 years Is there any way to make space chars encoded as '%20' rather than '+' when using a search engine?
  • almost 4 years add "close other tabs" commands
  • almost 4 years Force opening a link in the current tab
  • almost 4 years When using Vimium on Google Drive Doc Preview, the scroll functions are not available
  • almost 4 years Design guidelines for new features going forward
  • almost 4 years Edit url in omnibar
  • almost 4 years Question: Spacebar to cancel?
  • almost 4 years Feature request: paste from the "* register (mouse middle button) X11
  • almost 4 years Vimium loses the focus on load...
  • almost 4 years Feature request:Key mapping for Page-Open shortcuts
  • almost 4 years Feature request: ignore mode
  • almost 4 years Feature request: Scroll by paragraph
  • almost 4 years Feature request: Edit URL (like ge) but one level up the URL hierarchy
  • almost 4 years Feature request: "clickable" comboboxes
  • almost 4 years Feature request: Search box (optionally) at top.
  • almost 4 years Feature Request: Search (/) starts from current window?
  • almost 4 years Feature Request: Automatically Select the First Item in VomniBar dropdown
  • almost 4 years Feature request: Highlight tabs matched by T search [Need input]
  • almost 4 years Feature request: Handle elements that listen to an onclick event like links
vimium open pull requests (View All Pulls)
  • Rework the `duplicateTab` implementation...
  • declare min(chrome.ver) as 37 since we moved to chrome.sessions
  • Fix `<count>removeTab`.
  • Remove (unused) `tabInfoMap`.
  • Detect page context
  • Externally-implemented Vimium commands [PoC].
  • Recommended PhantomJS version 1.9.8
  • Enable link hints for all elements with `click` listeners
  • Normal mode key handling in frontend as a generic inheritable class
  • Switch frame with link hints and refactor link hint modes
  • Enable link hints for all elements with click listeners + support jQuery delegated events, and drop some legacy link hint conditions
  • Complex passkeys, exit insert mode commands, and enable escape insert mode for embeds
  • Add a dev-build command to show the current branch/commit
  • Perform background commands on the requesting tab by default
  • Move options page help text to its own cell.
  • Fix for accesskeys issue #839
  • Enable link hints across all frames of a tab
  • Add a label to advanced commands in the help dialog
  • i18n support and Chinese translation
  • Global link hints
  • Make [[ and ]] also inc/dec URL digits.
  • Rework logging (dev only)...
  • Help dialog to top frame
  • Treat mappings as arrays
  • Simplify javascript: URLs in vomnibar.
  • Add options-page button to sort exclusion rules.
  • Add sendMessage command to message external components.
  • add pre tag for link_hints
  • Adds single left/right angle quotation marks to next/previous patterns
  • Use document.scrollingElement for scrolling
  • Better detection of elements that aren't visible
  • Add chrome.commands support for simple actions
  • Alter search appearance
  • support mapping <backspace>
  • Add support for opening details elements
  • replace \xA0 on copying and pasting
  • Consider the alt-key status when trying to detect <c-[>
  • Complex key mapping
  • Don't set the update_url by default.
  • Adds new check to see if an element is covered by another
  • Makes sure all custom link hint characters defined in settings are lowercase
  • Move SearchEngines to bg-utils.coffee.
  • Fix event.key error
  • Extend createTab to open specific pages.
  • Add sendMessage command to message external components (version two)
  • New command: enter normal mode
  • Partial fix for selecting SELECT elements
  • Add timer between multiple character actions
  • use upper-case key names to represent shiftKey in <([acm]-)?.*> key mappings
  • Key mappings for Shift + [non-printable char key]
  • InsertMode should not handle key events if document.body is editable
  • LinkHints: focus elements with nonnegative tabIndex
  • make getSelectionFocusElement always return an element or null
  • Re-style HUD to look similar to Vomnibar
  • Add "swap" command option for marks.
  • getViewportTopLeft: support zoomed static documentElement
  • Fix #2430
  • Added hard reload binding - resolves #2486
  • Include elements with pointer cursor style as clickable links.
  • Fix visual line mode line selection behavior
  • Change keyEventSuppressor to a handler
  • WIP: Enable Firefox clipboard commands
  • Refine insert mode to correctly capture all shadow DOM focuses/blurs
  • Fix focus event handling within shadow DOM.
  • Populates vomnibar input with url ( Issue #2464)
  • WIP: Better visibility calculation for frames in link hints
  • Fix createTab for Firefox (#2894).
  • add an option "position=end/..." for command createTab
  • allow mapkey to 'enter' (v. isEnterMap, <c-]> by default)
  • Add command options for hints (hover, unhover, copy link text).
  • show favIcons for browser tabs on Vomnibar
  • When a sub-frame cannot scroll, focus the top frame.
  • Command for 'Open the bookmark from Bookmarks Bar'.
  • Do not specify tab.index for new tab.
  • [RFC] Add a (painfully) minimal commands listing
  • Remove WaitForEnter and TypingProtector modes from link hints code
  • [POC] Selenium tests
  • Make link hints all equal length
  • Coffeescript v2
  • Use Mocha instead of Shoulda.js for tests
  • tabs in 'o' vomnibar
  • Work better with Google Docs
  • findAndFollowLink(): look at title and id of links
  • add options to make global InsertMode more compatible with other tools
  • font color append "!important"
  • Add zoom command.
  • Add options to control selection for focusInput.
  • Use count prefix for closeTabs___ commands.
  • fix usage of :read-only on Firefox
  • customizable page up/down overlap
  • Change %S option to encode spaces correctly
  • Fix scrolling issue on quickly changing directions
  • Add Vomnibar.activateHighlightUrl command
  • Fix LinkHints.activateModeToDownloadLink
  • open link in new window
  • Export Vomnibar.activate
  • link reachability: pass <area>
vimium questions on Stackoverflow (View All Questions)
  • is it possible to map Vim key bindings for windows, just like vimium for chrome
  • Vimium and emacs like keyboard shortcuts
  • What are the files with .coffee extension found in the source of Google Chrome plugin Vimium?
  • Vimium interfering with HTML after removal
  • Is there a "Link Hints" (à-la Vimium) plugin for Vim, to quickly select windows/buffers/tabs?
  • Vimium - how to map vimium shortcut keys over chrome default shortcut keys?
  • Search for opened tabs in chrome using Vimium
  • How can I open a fixed url by a few strokes on chrome whth vimium
vimium list of languages used
Other projects in CoffeeScript