aboutsummaryrefslogtreecommitdiff
path: root/README.md
blob: ea4fce5a5192179d91d90c14372f78545d8c9b15 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
# 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

- <kbd>:</kbd>: open console
- <kbd>o</kbd>, <kbd>t</kbd>, <kbd>w</kbd>: open a page in current tab, new tab, or new window
- <kbd>O</kbd>, <kbd>T</kbd>, <kbd>W</kbd>: similar to <kbd>o</kbd>, <kbd>t</kbd>, <kbd>w</kbd>, but that contains current URL
- <kbd>b</kbd>: Select tabs by URL or title
- <kbd>a</kbd>: add current page to the bookmarks

See [console commands](#console-commands) section for more detailed description

#### Tabs
- <kbd>d</kbd>: delete tab
- <kbd>!</kbd><kbd>d</kbd>: delete pinned tab
- <kbd>u</kbd>: reopen close tab
- <kbd>r</kbd>: reload current tab
- <kbd>R</kbd>: reload current tab without cache
- <kbd>K</kbd> or <kbd>g</kbd><kbd>T</kbd>: select previous tab
- <kbd>J</kbd> or <kbd>g</kbd><kbd>t</kbd>: select next tab
- <kbd>g</kbd><kbd>0</kbd>: select first tab
- <kbd>g</kbd><kbd>$</kbd>: select last tab
- <kbd>Ctrl</kbd>+<kbd>6</kbd>: open previously selected tab
- <kbd>z</kbd><kbd>p</kbd>: pin tab
- <kbd>z</kbd><kbd>d</kbd>: duplicate tab

#### Scrolling

- <kbd>k</kbd>: scroll down
- <kbd>j</kbd>: scroll up
- <kbd>h</kbd>: scroll left
- <kbd>l</kbd>: scroll right
- <kbd>Ctrl</kbd>+<kbd>U</kbd>: scroll up for a half page
- <kbd>Ctrl</kbd>+<kbd>D</kbd>: scroll down for a half page
- <kbd>Ctrl</kbd>+<kbd>B</kbd>: scroll up for a whole page
- <kbd>Ctrl</kbd>+<kbd>F</kbd>: scroll down for a whole page
- <kbd>g</kbd><kbd>g</kbd>: scroll to top of a page
- <kbd>G</kbd>: scroll to bottom of a page
- <kbd>0</kbd>: scroll to the leftmost part of a page
- <kbd>$</kbd>: scroll to the rightmost part of a page

#### Zoom

- <kbd>z</kbd><kbd>i</kbd>: zoom in
- <kbd>z</kbd><kbd>o</kbd>: zoom out
- <kbd>z</kbd><kbd>z</kbd>: zoom neutral (reset)

#### Navigation

- <kbd>f</kbd>: start following links in the page in the current tab
- <kbd>F</kbd>: start following links in the page in new tabs
- <kbd>H</kbd>: go back in history
- <kbd>L</kbd>: go forward in history
- <kbd>[</kbd><kbd>[</kbd>, <kbd>]</kbd><kbd>]</kbd>: find  prev or next links and open it
- <kbd>g</kbd><kbd>u</kbd>: go to parent directory
- <kbd>g</kbd><kbd>U</kbd>: go to root directory
- <kbd>g</kbd><kbd>i</kbd>: 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

- <kbd>y</kbd>: copy URL in current tab
- <kbd>p</kbd>: open clipbord's URL in current tab
- <kbd>P</kbd>: open clipbord's URL in new tab
- <kbd>Shift</kbd>+<kbd>Esc</kbd>: enable or disable the add-on in current tab.
- <kbd>/</kbd>: start to find a keyword in the page
- <kbd>n</kbd>: find next keyword in the page
- <kbd>N</kbd>: find prev keyword in the page
- <kbd>g</kbd><kbd>f</kbd>: view page source

### Console commands

Vim Vixen provides a console for `ex`-style commands similar to Vimperator.

Open the console with <kbd>:</kbd>. Or start it with initial values using
<kbd>o</kbd>/<kbd>O</kbd>, <kbd>t</kbd>/<kbd>T</kbd>,
or <kbd>w</kbd>/<kbd>W</kbd>.

#### `: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 <kbd>a</kbd> 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": {
       "adjacenttab": false
   }
}
```

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
```

#### `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
```

For developers and contributors: you can look at
[#303](https://github.com/ueokande/vim-vixen/pull/303) for more details about
properties implementation and usage.

### 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
<kbd>shift</kbd>+<kbd>Esc</kbd>.

## Licence

MIT