]> git.gir.st - VimFx.git/blob - documentation/shortcuts.md
Make it possible to create custom hint commands
[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 settings 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 settings page in the Add-ons Manager
15 and automatically select the text input for that command. Tip: Use the `zF`
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 [modes]: modes.md
22
23
24 ## Key notation
25
26 VimFx’s key notation is inspired by Vim’s key notation.
27
28 Here is an example of what you can type into a text input for a command in
29 VimFx’s settings page in the Add-ons Manager:
30
31 J <c-s-tab> <c-j> gT g<left>
32
33 The above defines five alternative shortcuts for the same command. The first
34 three consist of one key each, while the rest consist of two. Letters can be
35 written as they are, while non-letter keys like Tab and the arrow keys need to
36 be put inside `<` and `>`. If you want to specify a modifier, then letters need
37 to be put inside `<` and `>` as well (as in the `<c-j>` example, which might be
38 notated as “CTRL+J” in some other programs.)
39
40 If you’re usure on how to express a key press you’d like to use as part of a
41 shortcut, press `<c-q>` while inside one of the text inputs for a command and
42 then press your desired key (optionally holding modifier keys). That will paste
43 the key notation for that particular key press into the text input. `<c-d>`
44 pastes the default shortcut(s), and `<c-r>` resets the text input to the default
45 entirely. You can of course use the standard `<c-z>` to undo.
46
47 You can specify any number of shortcuts for every command. Separate them from
48 each other by one or more spaces.
49
50 Here is a more formal description of all of the above:
51
52 A _shortcut_ consists of one or more _keys_ that you need to press in order to
53 activate the command. (See also the [timeout] option.)
54
55 A _key_ corresponds to pressing a single key on your keyboard, optionally while
56 holding one or more _modifiers._ The following modifiers are recognized:
57
58 - a: alt
59 - c: control (also known as ctrl)
60 - m: meta
61 - s: shift
62
63 (Which of the above you can actually use depends on your operating system.)
64
65 If you’d like to know even more about the key notation, see
66 [vim-like-key-notation].
67
68 [timeout]: options.md#timeout
69 [vim-like-key-notation]: https://github.com/lydell/vim-like-key-notation
70
71
72 ## Tips
73
74 If you use more than one keyboard layout, remember to check out the [Ignore
75 keyboard layout] option.
76
77 If you’d like see what VimFx interprets a key stroke as, you can (ab)use the
78 [`m`] command. Press `m` followed by your desired key stroke. A [notification]
79 will appear, including the interpreted key notation for that key press.
80
81 [Ignore keyboard layout]: options.md#ignore-keyboard-layout
82 [`m`]: commands.md#marks-m-and-
83 [notification]: notifications.md
84
85
86 ## Special keys
87
88 Just like Vim, VimFx has a few “special keys:”
89
90 - [`<force>`]
91 - [`<late>`]
92
93 No keyboard (or keyboard layout) can produce those (in practise). As a
94 consequence, putting one of those “keys” in a shortcut would normally make it
95 impossible to trigger. However, that is not the case for special keys.
96
97 By putting a special key at the beginning of a shortcut, the shortcut will work
98 exactly as it would without the special key, except that some behavior of the
99 shortcut is changed (depending on the special key used). Special keys specify an
100 _option_ for the shortcut rather than a key to press in order to activate the
101 command.
102
103 Each special key is described below.
104
105 [`<force>`]: #force
106 [`<late>`]: #late
107
108 ### `<force>`
109
110 The `<force>` special key makes the shortcut in question available in text
111 inputs.
112
113 VimFx enters a kind of “automatic insert mode” when you focus a text input,
114 allowing you to type text into it without triggering VimFx commands. The `esc`
115 command, however, is still available, allowing you to blur the text input by
116 pressing `<escape>`. The reason it is available is because the default shortcut
117 is `<force><escape>`.
118
119 Using `<force>` allows you to run other commands in text inputs as well. For
120 example, you could use `<force><a-j>` and `<force><a-k>` to be able to select
121 tab backward and forward regardless if you happen to be in a text input or not.
122
123 Notice that VimFx’s [button] turns grey when you’re in this “automatic insert
124 mode.”
125
126 [button]: button.md
127
128 ### `<late>`
129
130 The `<late>` special key makes the shortcut in question run _after_ the handling
131 of key presses in the current page, allowing the current page to override it.
132
133 Normally, all of VimFx’s shortcuts are triggered _before_ the current page gets
134 the key presses. This makes the VimFx shortcuts work consistently regardless of
135 what the current page happens to be up to.
136
137 Sometimes, though, it is useful to let the page override a shortcut. For
138 example, if you plan to use the arrow keys for VimFx’s scrolling commands, while
139 still being able to move the focus in the custom menus some sites use.
Imprint / Impressum