I have the following configuration for shortcuts, that works after running it in the cell of Jupiter notebook:
%%javascript
IPython.keyboard_manager.command_shortcuts.add_shortcut('ctrl-q', {
help: 'Clear all output', // This text will show up on the help page (CTRL-M h or ESC h)
handler: function (event) { // Function that gets invoked
if (IPython.notebook.mode == 'command') {
IPython.notebook.clear_all_output();
return false;
}
return true;
}
});
How can I setup Jupiter notebook to make this initialization automatically on startup?
I tried adding the same code (without %%javascript
) to C:\Users\<username>\.ipython\profile_default\static\custom\custom.js
but it didn't work.
I have only one profile, created with ipython profile create
, Python 3.3, Windows 7.
Thanks in advance.
custom.js is the correct place for this code. Try wrapping it as follows (don't forget the return true
before the end of the block):
$([IPython.events]).on("app_initialized.NotebookApp", function () {
<your code>
return true;
});
In the new version of Jupyter notebook (update it either with pip install --upgrade notebook
or if you use conda conda upgrade notebook
), you can customize them from the notebook itself.
To do this Help -> Edit keyboard shortcuts
1. For changing command mode shortcuts: refer Salvador's answer
2. For changing edit mode shortcuts:
Edit the file, ~/.jupyter/nbconfig/notebook.json as explained on https://jupyter-notebook.readthedocs.io/en/stable/extending/keymaps.html
For example, after replacing the control-enter shortcut to execute code, with command-enter on macOS, the file looks like this:
{
"Notebook": {
"Toolbar": true,
"Header": true
},
"Cell": {
"cm_config": {
"lineNumbers": true
}
},
"keys": {
"command": {
"unbind": [
"ctrl-enter"
],
"bind": {
"cmdtrl-enter": "jupyter-notebook:run-cell"
}
},
"edit": {
"unbind": [
"ctrl-enter"
],
"bind": {
"cmdtrl-enter": "jupyter-notebook:run-cell"
}
}
}
}