Currently JupyterLab seems to support emacs keybindings only in its text editor,
but not in the notebook cells. This might be simply a bug (actually it seems to be intentional - see #3885), as changing the
default config in codemirror would help, but until it is fixed, I'm using this
method of changing the default keymap in codemirror to emacs
.
I was badly missing the emacs keybindings support in the notebook cells
in the current version of JupyterLab, and as I was not familiar with
the jupyter development environment, I've just forked the jwkvam/jupyterlab-vim repo and adapted it to simply use keyMap=emacs
in codemirror.
- JupyterLab 1.0.1
jupyter labextension install jupyterlab-emacskeys
Because some common emacs keybindings are already reserved in jupyter-lab, you will have to disable them like this (see issue #1), i.e.:
{
"shortcuts": [
{
"command": "application:toggle-left-area",
"keys": [
"Accel B"
],
"selector": "body",
"disabled": true
},
{
"command": "application:close",
"keys": [
"Alt W"
],
"selector": ".jp-Activity",
"disabled": true
},
{
"command": "notebook:split-cell-at-cursor",
"keys": [
"Ctrl Shift -"
],
"selector": ".jp-Notebook.jp-mod-editMode",
"disabled": true
},
{
"command": "apputils:print",
"keys":["Accel P"],
"selector": "body",
"disabled": true
},
{
"command": "documentsearch:start",
"keys": [
"Accel F"
],
"selector": ".jp-mod-searchable",
"disabled": true
},
]
}
And because Chrome or Firefox tend to capture some shortcuts, it might help setting the Emacs key-theme for all GTK applications like this:
gsettings set org.gnome.desktop.interface gtk-key-theme "Emacs"
or by editing ~/.config/gtk-3.0/settings.ini
like this:
[Settings]
gtk-key-theme-name = Emacs
jupyter labextension uninstall jupyterlab-emacskeys
For a development install (requires npm version 4 or later), do the following in the repository directory:
npm install
npm run build
jupyter labextension link .
To rebuild the package and the JupyterLab app:
npm run build
jupyter lab build