Custom Keybindings
Nuclide has a bunch of built-in bindings to help you be productive from the keyboard. However, you may want to add your own keybindings for Nuclide commands as well. This is fairly easily done with some CSON editing.
Keymap CSON
To create your own keybinding, you will need to edit your ~/.atom/keymap.cson
file. If you aren’t
familiar with CSON, it is the CoffeeScript equivalent of JSON.
Here is an example ~/.atom/keymap.cson
file:
'.editor:not(.mini)':
'cmd-d': 'editor:delete-line'
'cmd-home': 'core:move-to-top'
'cmd-end': 'core:move-to-bottom'
'cmd-l': 'go-to-line:toggle'
Because CSON is a superset of JSON this could also be written as:
{
'.editor:not(.mini)': {
'cmd-d': 'editor:delete-line',
'cmd-home': 'core:move-to-top',
'cmd-end': 'core:move-to-bottom',
'cmd-l': 'go-to-line:toggle'
}
}
It may not be obvious, but each key in the top-level map is a CSS selector. Values are pairs of
commands and keybindings that are applicable in an element that matches the CSS selector. The
selector .editor:not(.mini)
matches an editor in Nuclide that is not used as a single-line input
text box. Therefore, when you want to add a keyboard shortcut for an editor, add it to the
.editor:not(.mini)
map.
Platform Specific Bindings
You can make your bindings platform specific with .platform-xxxxx
as part of your CSS selector.
For example the Nuclide nuclide-quick-open
CSON looks like this:
{
".platform-darwin atom-workspace": {
"cmd-t": "nuclide-quick-open:find-anything-via-omni-search"
},
".platform-win32 atom-workspace, .platform-linux atom-workspace": {
"ctrl-t": "nuclide-quick-open:find-anything-via-omni-search"
}
}
where .platform-darwin
represents macOS, .platform-win32
represents Windows, and .platform-linux
represents Linux.