# 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
#### Tabs
- !d: delete pinned tab
- u: reopen close tab
- r: reload current tab
- R: reload current tab without cache
### Navigation
- f: start following links in the page
- 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
#### 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, t, or 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.
#### `:bdeletes` command
Close tabs matches with keywords.
#### `: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.
#### `:set` command
`:set` command can set properties on console.
##### `smoothscroll` property
Enable/disable smooth scroll.
```
:set smoothscroll " enable smooth scroll
:set nosmoothscroll " disable smooth scroll
```
##### `hintchars` property
Set hint characters
```
:set hintchars=0123456789
```
##### 'adjacenttab' property
Open a new tab on adjacent of the current tab.
```
:set noadjacenttab " open a tab at last
:set adjacenttab " open a tab adjacently
```
### 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