So, I really like the Jupyter notebook (formerly known as the IPython notebook), but I often find myself missing the ‘fancy’ features that ‘proper’ editors have. I particularly miss the amazing multiple cursor functionality of editors like Sublime Text and Atom.

I’ve known for a while that you can edit a cell in your default $EDITOR by running %%edit at the top of the cell – but I’ve recently found out that you can configure Jupyter to use Sublime Text-style keyboard shortcuts when editing cells in the notebook – all thanks to CodeMirror, the javascript-based text editor component that the Jupyter notebook uses. Brilliantly, this also brings with it the multiple-cursor functionality! So, you can get something like this:

So, how do you do this? It’s really simple.

Find your Jupyter configuration folder by running jupyter --config-dir Open the custom.js file in the custom sub-folder in your favourite editor Add the following lines to the bottom of the file

require(["codemirror/keymap/sublime", "notebook/js/cell", "base/js/namespace"], function(sublime_keymap, cell, IPython) { // setTimeout(function(){ // uncomment line to fake race-condition cell.Cell.options_default.cm_config.keyMap = 'sublime'; var cells = IPython.notebook.get_cells(); for(var c=0; c< cells.length ; c++){ cells.code_mirror.setOption('keyMap', 'sublime'); } // }, 1000)// uncomment line to fake race condition } );

That should be it – if you start a notebook now all of the Sublime Text shortcuts should be working!