]> git.gir.st - VimFx.git/blob - documentation/options.md
Merge branch 'master' into develop
[VimFx.git] / documentation / options.md
1 <!--
2 This is part of the VimFx documentation.
3 Copyright Simon Lydell 2015, 2016.
4 See the file README.md for copying conditions.
5 -->
6
7 # Options
8
9 VimFx has many options that can be configured, but they all have nice defaults
10 so you shouldn’t need to.
11
12 Advanced users might also be interested in [styling] VimFx and writing a [config
13 file].
14
15 [styling]: styling.md
16 [config file]: config-file.md
17
18
19 ## Regular options
20
21 These options are available in VimFx’s settings page in the Add-ons Manager
22 (where you can also customize [keyboard shortcuts]).
23
24 [keyboard shortcuts]: shortcuts.md
25
26 ### Hint chars
27
28 The characters used for the hints in Hints mode, which can be entered using one
29 of the many `f` commands. See also [The `f` commands].
30
31 [The `f` commands]: commands.md#the-f-commands--hints-mode
32
33 ### “Previous”/“Next” link patterns
34
35 Space separated lists of patterns that match links to the previous/next page.
36 Used by the `[` and `]` commands.
37
38 There is a standardized way for websites to tell browsers the URLs to the
39 previous and next page. VimFx looks for that information in the first place.
40 Unfortunately, many websites don’t provide this information. Then VimFx falls
41 back on looking for links on the page that seem to go to the previous/next page
42 using patterns.
43
44 The patterns are matched at the beginning and end of link text (and the
45 attributes defined by the advanced setting [`pattern_attrs`]). The patterns do
46 not match in the middle of words, so “previous” does not match “previously”.
47 The matching is case <strong>in</strong>sensitive.
48
49 Actually, the patterns are regular expressions. If you do not know what a
50 regular expression is, that’s fine. You can type simple patterns like the
51 default ones without problems. If you do know what it is, though, you have the
52 possibility to create more advanced patterns if needed.
53
54 Some of the default patterns are English words. You might want to add
55 alternatives in your own language.
56
57 Note: If you need to include a space in your pattern, use `\s`. For example:
58 `next\spage`.
59
60 [`pattern_attrs`]: #pattern_attrs
61
62 ### Blacklist
63
64 Space separated list of URLs where VimFx should automatically enter Ignore mode.
65 Example:
66
67 *example.com* http://example.org/editor/*
68
69 Note that the URLs in the list must match the current URL _entirely_ for it to
70 apply. Therefore it is easiest to always use the `*` wildcard (which matches
71 zero or more characters).
72
73 (Set the option to `*` to make VimFx start out in Ignore mode _everywhere._)
74
75 You might also want to read about the [Ignore mode `<s-f1>` command][s-f1].
76
77 [s-f1]: commands.md#ignore-mode-s-f1
78
79 ### Prevent autofocus
80
81 Many sites autofocus their search box, for example. This might be annoying when
82 browsing using the keyboard, as you do with VimFx, because it often feels like
83 VimFx isn’t responding, until you realize that you are typing in a text box—not
84 running VimFx commands!
85
86 For this reason VimFx can prevent autofocus. It’s not enabled by default,
87 though, since one of VimFx’s key features is to be nice to your browser and your
88 habits.
89
90 If enabled, all focusing that occurs on page load, or after you’ve just switched
91 back to a tab from another, until you interact with the page is prevented.
92
93 #### Technical notes and trivia
94
95 Autofocus on page load and when coming back to a tab are the two most common
96 cases. Some sites, though, automatically focus a text input in other cases as
97 well. Trying to catch those cases as well, VimFx used to prevent all focusing
98 that didn’t occur within a fixed number of milliseconds after your last
99 interaction (click or keypress). However, this proved to be too aggressive,
100 preventing too much focusing. In other words, the time-based check was not
101 sufficient to distinguish between intended focusing and automatic unwanted
102 focusing. It made things worse more than it helped. Since these cases are so
103 difficult (if not impossible) to detect, it is better to leave them. Thankfully
104 they are not very common.
105
106 On page load or when coming back to a tab, before you have interacted with the
107 page in any way, we can be _sure_ that any focusing is automatic (not caused by
108 you), which makes it safe to prevent all focusing in those time spans.
109
110 ### Ignore keyboard layout
111
112 If you use more than one keyboard layout, you probably want to enable this
113 option.
114
115 People who use a keyboard layout _without_ the letters A–Z usually also use the
116 standard en-US QWERTY layout as well.
117
118 This option makes VimFx ignore your current layout and pretend that the standard
119 en-US QWERTY layout is _always_ used. This way the default shortcuts work even
120 if your layout doesn’t contain the letters A–Z and all shortcuts can be typed by
121 the same physical keys on your keyboard regardless of your current keyboard
122 layout.
123
124 (If you’d like VimFx to pretend that some other keyboard layout than the
125 standard en-US QWERTY is always used, you may do so with the special option
126 [`translations`].)
127
128 [`translations`]: #translations
129
130 ### Timeout
131
132 The maximum amount of time (in milliseconds) that may pass between two
133 keypresses of a shortcut.
134
135 It’s easy to press, say, `a` by mistake while browsing. Without a timeout, you
136 might be surprised that all search results are highlighted when you a bit later
137 try to search using the `/` command. (That’s what `a/` does.) _With_ a timeout,
138 the `a` would be cancelled when the timeout has passed.
139
140
141 ## Advanced options
142
143 These options are _not_ available in VimFx’s settings page in the Add-ons
144 Manager. They can only be changed in [about:config] or using a [config file].
145 They all start with `extensions.VimFx.`.
146
147 (There are actually a few more advanced options than those listed here. You can
148 see them all in [defaults.coffee].)
149
150 [about:config]: http://kb.mozillazine.org/About:config
151 [config file]: config-file.md
152 [defaults.coffee]: ../extension/lib/defaults.coffee
153
154 ### `notifications_enabled`
155
156 Controls whether [notifications] should be shown or not.
157
158 You can also choose to show notifications any way you want by listening for the
159 [the `notification` and `hideNotification` events][notification-events].
160
161 [notifications]: notifications.md
162 [notification-events]: api.md#the-notification-and-hidenotification-events
163
164 ### `notify_entered_keys`
165
166 If enabled, a [notification] is shown with the keys you have entered so far of
167 a command. This is only noticeable if you type a multi-key shortcut or use a
168 count.
169
170 [notification]: notifications.md
171
172 ### `prevent_target_blank`
173
174 You might have noticed that some links open in new tabs when you click them.
175 That is not the case if you “click” them using VimFx’s `f` command, though. If
176 you dislike that, disable this option.
177
178 ### `counts_enabled`
179
180 Controls whether [counts] are enabled or not.
181
182 [counts]: commands.md#counts
183
184 ### `ignore_ctrl_alt`
185
186 This option is enabled by default on Windows, and disabled otherwise.
187
188 If enabled, ignores ctrl+alt for printable keys. `<a-c-$>` becomes `$` and
189 `<a-c-A>` becomes `A`, while `<a-c-enter>` stays the same.
190
191 This option is suitable on Windows, which treats [AltGr as
192 ctrl+alt][wikipedia-altgr]. For example, if a user of the sv-SE layout on
193 Windows holds AltGr and presses the key labeled `4`, in order to produce a `$`,
194 the result would be `<a-c-$>` without this option, making it impossible to
195 trigger a keyboard shortcut containing `$`. _With_ this option the result is
196 `$`, as expected (and as on GNU/Linux). On the other hand it won’t be possible
197 to trigger keyboard shortcuts such as `<a-c-a>`, but ctrl+alt keyboard shortcuts
198 are [discouraged on Windows][wikipedia-altgr] anyway because of this reason.
199
200 [wikipedia-altgr]: https://en.wikipedia.org/wiki/AltGr_key#Control_.2B_Alt_as_a_substitute
201
202 ### `prevent_autofocus_modes`
203
204 Space separated list of modes where `prevent_autofocus` should be used.
205
206 ### `config_file_directory`
207
208 VimFx can optionally be customized using a [config file]. If you want to that,
209 you need to tell VimFx where that file is. That’s what this pref is for.
210
211 By default this pref is blank (the empty string), which means that no config
212 file should be loaded.
213
214 If non-blank, it should be the path to the directory where the config file
215 exists. See the [config file] documentation for more information.
216
217 [config file]: config-file.md
218
219 ### `hints_timeout`
220
221 The number of milliseconds a matched hint marker should stay on screen before
222 disappearing (or resetting).
223
224 ### `hints_sleep`
225
226 In Hints mode, VimFx continually checks if the element for a hint marker has
227 moved. If so, the marker is moved as well. This pref controls how many
228 milliseconds VimFx should “sleep” between each check. The shorter, the more CPU
229 usage, the longer, the more stuttery marker movement.
230
231 The default value should work fine, but if you have a low-performing computer
232 and you notice bothering CPU usage during Hints mode you might want to raise the
233 sleep time.
234
235 Set it to -1 to disable the marker movement feature entirely.
236
237 ### Scrolling prefs
238
239 Apart from its own prefs, VimFx also respects a few built-in Firefox prefs.
240
241 #### Smooth scrolling
242
243 If you want to customize Firefox’s smooth scrolling, adjusting
244 `general.smoothScroll.{lines,pages,other}.duration{Min,Max}MS` is the way to
245 go. VimFx has similar prefs for the scrolling commands, but they work like
246 `layout.css.scroll-behavior.spring-constant`.
247
248 Basically, the higher the value, the faster the scrolling.
249
250 These are VimFx’s variants, and the commands they affect:
251
252 - `smoothScroll.lines.spring-constant`: `h`, `l`, `j`, `k`
253 - `smoothScroll.pages.spring-constant`: `d`, `u`, `<space>`, `<s-space>`
254 - `smoothScroll.other.spring-constant`: `gg`, `G`, `0`, `^`, `$`
255
256 Note that the value of these prefs are _strings,_ not numbers!
257
258 The Firefox pref `general.smoothScroll` lets you turn off smooth scrolling
259 entirely, including all of VimFx’s scrolling commands.
260
261 `general.smoothScroll.lines`, `general.smoothScroll.pages`, and
262 `general.smoothScroll.other` lets you selectively disable smooth scrolling.
263 VimFx’s scrolling commands follow the same “lines,” “pages” and “other”
264 categorization as in the above list.
265
266 #### Scroll step
267
268 By default you can scroll using the arrow keys in Firefox. You can control how
269 much they scroll by adjusting the following prefs:
270
271 - `toolkit.scrollbox.horizontalScrollDistance`: `<left>`, `<right>`, `h`, `l`
272 - `toolkit.scrollbox.verticalScrollDistance`: `<down>`, `<up>`, `j`, `k`
273
274 (VimFx used to have a `scroll_step` pref, but is has been replaced by the
275 above.)
276
277 #### `scroll.full_page_adjustment` and `scroll.half_page_adjustment`
278
279 An important use case for scrolling a full page down is to read an entire page
280 (a window-full) of text, press `<space>` and then continue reading the next
281 page. However, if you can only see, say, _half_ of the height the last line,
282 pressing `<space>` would give you the other half, but reading only the top or
283 bottom parts of letters is difficult. Even if the lines happen to line up with
284 the window edge to not be sliced horizontally, it might feel disorienting
285 pressing `<space>`.
286
287 For this reason, both VimFx and Firefox by default scroll _about a line less
288 than a whole page_ when pressing `<space>`. This solves the sliced-last-line
289 problem, and provides some context on where you are in the text you’re reading.
290
291 These two prefs control how many pixels “about a line” actually means for the
292 different page scrolling commands.
293
294 - `scroll.full_page_adjustment`: `<space>, `<s-space>`
295 - `scroll.half_page_adjustment`: `d`, `u`
296
297 #### `scroll.last_position_mark`
298
299 The special mark for the [`` ` ``][scroll-to-mark] command that takes you to the
300 last position.
301
302 [scroll-to-mark]: commands.md#marks-m-and-
303
304 ### `pattern_selector`
305
306 A CSS selector that targets candidates for a previous/next page link.
307
308 ### `pattern_attrs`
309
310 A space-separated list of attributes that the [“Previous”/“Next” link patterns]
311 should be matched against.
312
313 [“Previous”/“Next” link patterns]: #previousnext-link-patterns
314
315 ### `hints_toggle_in_tab`
316
317 If the keypress that matched a hint starts with this string, toggle whether to
318 open the matched link in the current tab or a new tab. See [The `f` commands]
319 for more information.
320
321 ### `hints_toggle_in_background`
322
323 If the keypress that matched a hint starts with this string, open the matched
324 link in a new tab and toggle whether to open that tab in the background or
325 foreground. See [The `f` commands] for more information.
326
327 ### `activatable_element_keys`
328
329 Keys that should not trigger VimFx commands but be sent through to the page if
330 an “activatable” element (link or button) is focused.
331
332 ### `adjustable_element_keys`
333
334 Keys that should not trigger VimFx commands but be sent through to the page if
335 an “adjustable” element (form control or video player) is focused.
336
337 ### `focus_previous_key` and `focus_next_key`
338
339 The default values are `<s-tab` and `<tab>`, respectively. Those keys are
340 specially handled after focusing a text input using [`gi`]. To disable this
341 special handling, set the prefs to the empty string.
342
343 [`gi`]: commands.md#gi-1
344
345
346 ## Special options
347
348 These options are available in neither VimFx’s settings page in the Add-ons
349 Manager nor in [about:config]. The only way to change them is by using the
350 a [config file].
351
352 ### `translations`
353
354 See the description of the `translations` option in [vim-like-key-notation].
355
356 [vim-like-key-notation]: https://github.com/lydell/vim-like-key-notation#api
357
358 ### `categories`
359
360 See the documentation for [`vimfx.get('categories')`][categories].
361
362 [categories]: api.md#vimfxgetcategories
Imprint / Impressum