How to add keyboard shortcuts permanently to Jupyt

2019-04-05 04:42发布

问题:

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.

回答1:

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;
});


回答2:

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



回答3:

Adding hotkeys the easy way with nbextensions

  1. Install nbextensions.
    pip install jupyter_contrib_nbextensions
  2. Then launch jupyter notebook.
  3. The the intro page will have a new tab called nbextensions click it and enable Keyboard Shortcut Editor.
  4. Now open any notebook click help>keyboard shortcuts
  5. Each shortcut will have a pencil icon next to it if you click on it then you can set the shortcut to whatever you want.


回答4:

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"
      }  
    } 
  }   
}