Skip to content
:neckbeard: Vim notebook cell bindings for JupyterLab
Branch: master
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
src Alpha1 (#89) Jul 16, 2019
style cookiecutter Dec 2, 2017
.gitignore jlab 0.35 compatibility (#66) Oct 8, 2018
.travis.yml atleast to lint checks (#14) Jan 13, 2018 Alpha1 (#89) Jul 16, 2019
LICENSE Initial commit Dec 2, 2017 jlab 0.35 compatibility (#66) Oct 8, 2018 update jupyterlab version in readme Jul 16, 2019
package.json v0.11.0 Jul 16, 2019
tsconfig.json Alpha1 (#89) Jul 16, 2019
tslint.json atleast to lint checks (#14) Jan 13, 2018
yarn.lock Alpha1 (#89) Jul 16, 2019


npm version Build Status npm downloads

Notebook cell vim bindings


Special Thanks

I want to acknowledge Alisue and his excellent work creating vim bindings for Jupyter notebooks. I hope this extension can meet the high bar his work set.


This extension splits Jupyter edit mode into two modes: Vim command mode and Vim insert mode. Three editing modes now exist: Jupyter command, Vim command, and Vim insert.



  • JupyterLab 1.0

Install or upgrade

jupyter labextension install jupyterlab_vim


jupyter labextension uninstall jupyterlab_vim

Key Bindings

Please note that all keys are lowercase unless Shift is explicitly indicated. For example, Y, Y is two lowercase ys, Shift-Y, Y is one uppercase Y followed by a lowercase y.

Shortcuts this extension introduces:

Vim Ex commands

Command Action
:w[rite] Save Notebook
:q[uit] Enter Jupyter command mode

Vim command bindings

Chord Action
Ctrl-O, U Undo Cell Action
- Split Cell at Cursor
Ctrl-O, - Split Cell at Cursor
Ctrl-O, D Cut Cell
Ctrl-O, Y Copy Cell
Ctrl-O, P Paste Cell
Ctrl-Shift-J Extend Marked Cells Below
Ctrl-Shift-K Extend Marked Cells Above
Ctrl-O, O Insert Cell Below
Ctrl-O, Ctrl-O Insert Cell Above
Ctrl-J Select Cell Below
Ctrl-K Select Cell Above
Ctrl-O, G Select First Cell
Ctrl-O, Ctrl-G Select Last Cell
Ctrl-E Move Cell Down
Ctrl-Y Move Cell Up
Ctrl-O, Z, Z Center Cell
Ctrl-G Show Tooltip
Command/Ctrl-1 Code Cell Mode
Command/Ctrl-2 Markdown Cell Mode
Command/Ctrl-3 Raw Cell Mode
Shift-Escape Leave Vim Mode

Jupyter command bindings

Chord Action
G, G Select First Cell
Shift-G Select Last Cell
D, D Delete Cell
Y, Y Yank (Copy) Cell
P Paste Cell
Shift-P Paste Cell Above
O Insert Cell
Shift-O Insert Cell Above
U Undo Cell Action
Ctrl-E Move Cells Down
Ctrl-Y Move Cells Up
Z, Z Center Cell


Contributions and feedback are most welcome!


For a development install (requires npm version 4 or later), do the following in the repository directory. Please note, you need to make sure that you satisfy all the prerequisites, i.e. the JupyterLab version.

jlpm install
jlpm run build
jupyter labextension link .

To rebuild the package and the JupyterLab app:

jlpm run build
jupyter lab build
You can’t perform that action at this time.