]> git.gir.st - VimFx.git/blob - documentation/shortcuts.md
Update copyright years
[VimFx.git] / documentation / shortcuts.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 # Shortcuts
8
9 All of VimFx’s keyboard shortcuts can be customized in VimFx’s options page in
10 the Add-ons Manager. Doing so is really easy. You get far just by looking at the
11 defaults and trying things out. If not, read on.
12
13 In VimFx’s Keyboard Shortcuts help dialog (which can be opened by pressing `?`)
14 you can click any command to open VimFx’s options page in the Add-ons Manager
15 and automatically select the text input for that command. Tip: Use the `eb`
16 command to click without using the mouse.
17
18 Shortcuts tell which keys to press to activate a command. A command may have
19 several different shortcuts. Read about [modes] for more information.
20
21 This file documents how the shortcuts work in general, not the [default
22 shortcuts] or details on what the [_command_][commands] for a shortcut does.
23
24 [modes]: modes.md
25 [default shortcuts]: https://github.com/akhodakivskiy/VimFx/blob/master/extension/lib/defaults.coffee
26 [commands]: commands.md
27
28
29 ## Key notation
30
31 VimFx’s key notation is inspired by Vim’s key notation.
32
33 Here is an example of what you can type into a text input for a command in
34 VimFx’s options page in the Add-ons Manager:
35
36 J <c-s-tab> <c-j> gT g<left>
37
38 The above defines five alternative shortcuts for the same command. The first
39 three consist of one key each, while the rest consist of two. Letters can be
40 written as they are, while non-letter keys like Tab and the arrow keys need to
41 be put inside `<` and `>`. If you want to specify a modifier, then letters need
42 to be put inside `<` and `>` as well (as in the `<c-j>` example, which might be
43 notated as “CTRL+J” in some other programs.)
44
45 You can specify any number of shortcuts for every command. Separate them from
46 each other by one or more spaces.
47
48 ### Helper keyboard shortcuts
49
50 When you have focused the text input for one of all commands, there are a few
51 handy keyboard shortcuts that help you with editing your shortcuts:
52
53 - `<c-q>`: Use this when you’re unsure on how to express a keypress you’d like
54 to use as part of a shortcut. First, press `<c-q>`. Then, press your desired
55 key (optionally holding modifier keys). That will paste the key notation for
56 that particular keypress into the text input. For example: First press
57 `<c-q>`. Then hold down ctrl and press `[`. That results in `<c-[>` being
58 inserted into the text input.
59
60 - `<c-d>`: Pastes the default shortcut(s) into the text input.
61
62 - `<c-r>`: Resets the text input to the default entirely.
63
64 - `<c-z>`: Undo. (This is simply the standard undo feature of your operating
65 system. It’s just mentioned because it is easy to forget that it can actually
66 be used here.)
67
68 (`<c-d>`, `<c-r>` and `<c-z>` also work in other VimFx setting inputs, such as
69 the [“Previous”/“Next” link patterns].)
70
71 [“Previous”/“Next” link patterns]: options.md#previousnext-link-patterns
72
73 ### A bit more formal description
74
75 A _shortcut_ consists of one or more _keys_ that you need to press in order to
76 activate the command. (See also the [timeout] option.)
77
78 A _key_ corresponds to pressing a single key on your keyboard, optionally while
79 holding one or more _modifiers._ The following modifiers are recognized:
80
81 - a: alt
82 - c: control (also known as ctrl)
83 - m: meta
84 - s: shift
85
86 (Which of the above you can actually use depends on your operating system.)
87
88 If you’d like to know even more about the key notation, see
89 [vim-like-key-notation].
90
91 [timeout]: options.md#timeout
92 [vim-like-key-notation]: https://github.com/lydell/vim-like-key-notation
93
94
95 ## Tips
96
97 If you use more than one keyboard layout, remember to check out the [Ignore
98 keyboard layout] option.
99
100 If you’d like see what VimFx interprets a key stroke as, you can (ab)use the
101 [`m`] command. Press `m` followed by your desired key stroke. A [notification]
102 will appear, including the interpreted key notation for that keypress.
103
104 [Ignore keyboard layout]: options.md#ignore-keyboard-layout
105 [`m`]: commands.md#marks-m-and-
106 [notification]: notifications.md
107
108
109 ## Special keys
110
111 Just like Vim, VimFx has a few “special keys:”
112
113 - [`<force>`]
114 - [`<late>`]
115
116 No keyboard (or keyboard layout) can produce those (in practise). As a
117 consequence, putting one of those “keys” in a shortcut would normally make it
118 impossible to trigger. However, that is not the case for special keys.
119
120 By putting a special key at the beginning of a shortcut, the shortcut will work
121 exactly as it would without the special key, except that some behavior of the
122 shortcut is changed (depending on the special key used). Special keys specify an
123 _option_ for the shortcut rather than a key to press in order to activate the
124 command.
125
126 Each special key is described below.
127
128 [`<force>`]: #force
129 [`<late>`]: #late
130
131 ### `<force>`
132
133 The `<force>` special key makes the shortcut in question available in text
134 inputs.
135
136 VimFx enters a kind of “automatic insert mode” when you focus a text input,
137 allowing you to type text into it without triggering VimFx commands. The `esc`
138 command, however, is still available, allowing you to blur the text input by
139 pressing `<escape>`. The reason it is available is because the default shortcut
140 is `<force><escape>`.
141
142 Using `<force>` allows you to run other commands in text inputs as well. For
143 example, you could use `<force><a-j>` and `<force><a-k>` to be able to select
144 tab backward and forward regardless if you happen to be in a text input or not.
145
146 Notice that VimFx’s [button] turns grey when you’re in this “automatic insert
147 mode.”
148
149 [button]: button.md
150
151 ### `<late>`
152
153 The `<late>` special key makes the shortcut in question run _after_ the handling
154 of keypresses in the current page, allowing the current page to override it.
155
156 Normally, all of VimFx’s shortcuts are triggered _before_ the current page gets
157 the keypresses. This makes the VimFx shortcuts work consistently regardless of
158 what the current page happens to be up to.
159
160 Sometimes, though, it is useful to let the page override a shortcut. For
161 example, if you plan to use the arrow keys for VimFx’s scrolling commands, while
162 still being able to move the focus in the custom menus some sites use.
Imprint / Impressum