# Vim Vixen [![Greenkeeper badge](https://badges.greenkeeper.io/ueokande/vim-vixen.svg)](https://greenkeeper.io/) [![Join the chat room on Gitter for vim-vixen/vim-vixen](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/vim-vixen/vim-vixen) [![CircleCI](https://circleci.com/gh/ueokande/vim-vixen.svg?style=svg)](https://circleci.com/gh/ueokande/vim-vixen) [![devDependencies Status](https://david-dm.org/ueokande/vim-vixen/dev-status.svg)](https://david-dm.org/ueokande/vim-vixen?type=dev) Vim Vixen is a Firefox add-on which allows you to navigate with keyboard on the browser. Firefox started to support WebExtensions API and will stop supporting add-ons using legacy APIs from version 57. For this reason, many legacy add-ons do not work on Firefox 57. Vim Vixen is a new choice for Vim users since Vim Vixen uses the WebExtensions API. ## Basic usage ### Key-maps The key-maps are configurable in the add-ons preferences by navigating to `about:addons` and selecting "Extensions". The default mappings are as follows: #### Console - :: open console - o, t, w: open a page in current tab, new tab, or new window - O, T, W: similar to o, t, w, but that contains current URL - b: Select tabs by URL or title - a: add current page to the bookmarks See [console commands](#console-commands) section for more detailed description #### Tabs - d: delete tab - !d: delete pinned tab - u: reopen close tab - r: reload current tab - R: reload current tab without cache - K or gT: select previous tab - J or gt: select next tab - g0: select first tab - g$: select last tab - Ctrl+6: open previously selected tab - zp: pin tab - zd: duplicate tab #### Scrolling - k: scroll down - j: scroll up - h: scroll left - l: scroll right - Ctrl+U: scroll up for a half page - Ctrl+D: scroll down for a half page - Ctrl+B: scroll up for a whole page - Ctrl+F: scroll down for a whole page - gg: scroll to top of a page - G: scroll to bottom of a page - 0: scroll to the leftmost part of a page - $: scroll to the rightmost part of a page - m: set a mark from current position - ': jump to position by the mark Lowercase alphabet mark (`[a-z]`) stores position on the current tab. Upper alphabet and numeric mark (`[A-Z0-9]`) stores position and tab. #### Zoom - zi: zoom in - zo: zoom out - zz: zoom neutral (reset) #### Navigation - f: start following links in the page in the current tab - F: start following links in the page in new tabs - H: go back in history - L: go forward in history - [[, ]]: find prev or next links and open it - gu: go to parent directory - gU: go to root directory - gi: focus first input Plugin can be configured to follow links in new tabs in background instead of switching to a new tab immediately. To do this you need to update config file: change `"background"` property of `"follow.start"` action to true: ```json { "keymaps": { "F": { "type": "follow.start", "newTab": true, "background": true }, } } ``` #### Misc - y: copy URL in current tab - p: open clipbord's URL in current tab - P: open clipbord's URL in new tab - Shift+Esc: enable or disable the add-on in current tab. - /: start to find a keyword in the page - n: find next keyword in the page - N: find prev keyword in the page - gf: view page source ### Console commands Vim Vixen provides a console for `ex`-style commands similar to Vimperator. Open the console with :. Or start it with initial values using o/O, t/T, or w/W. #### `:open` command The `:open` command operates two different ways, depending on the parameter. When the parameter is a URL, that URL is opened in the current tab. ``` :open http://github.com/ueokande ``` Otherwise, the current tab will open a search page with the supplied string (defaults to Google). ``` :open How to contribute to Vim-Vixen ``` To use a search engine other than the default, specify which search engine to use as the first parameter. ``` :open yahoo How to contribute to Vim-Vixen ``` To adjust the search engine default and add/remove search engines, see the [search engines](#search-engines) section. #### `:tabopen` command Open a URL or search keywords by search engine in new tab. #### `:quit` or `:q` command Close the current tab. #### `:quitall` or `:qa` command Close all tabs. #### `:bdelete` command Close a certain tab. You can add `!` at the end of the command to close tab even if it is pinned: ``` :bdelete! ``` #### `:bdeletes` command Close tabs matches with keywords. You can add `!` at the end of the command to close even pinned tabs: ``` :bdeletes! ``` #### `:winopen` command Open a URL or search keywords by search engine in new window. #### `:buffer` command Select tabs by URL or title matched by keywords. #### `:addbookmark` command Create a bookmark from the current URL. ``` :addbookmark My bookmark title ``` The key map a is a contenient way to create a bookmark from the current page. That shows `:addbookmark` with a title from the current page into console. #### `:set` command `:set` command can temporary override properties using console. See [properties](#properties) section for more detailed description of available properties. ### Properties Plugin supports configurable properties which can be configured in JSON settings: ```json { "properties": { "complete": "sbh" } } ``` Properties can be temporary overwritten by `:set` command in console. List of available properties you can find below: #### `smoothscroll` property Enable/disable smooth scroll. ``` :set smoothscroll " enable smooth scroll :set nosmoothscroll " disable smooth scroll ``` #### `hintchars` property Set hint characters ``` :set hintchars=0123456789 ``` #### `complete` property Set completion items on `open`, `tabopen` `winopen` commands. Hit Tab or Shift+Tab to Select an item from the completion list. The allowed value is character sequence of `s`, `b`, or `n`. Each character presents as following: - `s`: search engines - `b`: bookmark items - `h`: history items. ``` :set complete=sbn ``` ### Search engines Vim Vixen supports search by search engines like Google and Yahoo. You can configure search engines, including the default search engine, in the add-ons preferences. The URLs specified in `"engines"` must contain a {}-placeholder, which will be replaced with the search keyword parameters of the command. ```json { "search": { "default": "google", "engines": { "google": "https://google.com/search?q={}", "yahoo": "https://search.yahoo.com/search?p={}", "bing": "https://www.bing.com/search?q={}", "duckduckgo": "https://duckduckgo.com/?q={}", "twitter": "https://twitter.com/search?q={}", "wikipedia": "https://en.wikipedia.org/w/index.php?search={}" } } } ``` ### Blacklist The blacklist allows you to disable the plugin for certain pages by URL patterns. For instance, when you describe `"*.slack.com"`, the plugin is disabled on any Slack rooms. In addition, you can also specify path patterns, such as `"example.com/mail/*"`. ```json { "blacklist": [ "*.slack.com", "example.com/mail/*" ] } ``` You can toggle Vim Vixen between disabled and enabled with shift+Esc. ## Licence MIT