A bridge enabling real-time editing of Jupyter notebooks in Neovim with live preview and execution in JupyterLab.
Neopyter is a bridge that connects Neovim and JupyterLab, enabling real-time editing of Jupyter notebooks directly within Neovim. It solves the problem of context switching between a code editor and a browser-based notebook interface by synchronizing content bidirectionally and allowing execution of cells from Neovim.
Data scientists, researchers, and developers who use Jupyter notebooks but prefer Neovim's editing environment and want a more keyboard-driven, efficient workflow.
Developers choose Neopyter because it combines Neovim's powerful editing capabilities with JupyterLab's interactive execution, eliminating the need to switch between applications and providing a seamless, real-time notebook editing experience.
The bridge between Neovim and Jupyterlab
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Edits in Neovim instantly reflect in JupyterLab and vice versa, eliminating context switching and enabling live previews, as shown in the synchronization features.
Offers direct mode for lower latency and shareable JupyterLab instances, and proxy mode to reduce Neovim load, adapting to different network setups per the README's mode comparison.
Includes tree-sitter-based syntax highlighting, text objects for cell navigation, and completion via nvim-cmp or blink.cmp, deeply embedding notebook workflows into Neovim.
Allows running cells, managing kernels, and executing JupyterLab commands directly from Neovim via APIs, providing full control without touching the browser.
Requires separate installations for the JupyterLab extension (via pip) and Neovim plugin, with configuration needed on both ends, increasing initial overhead.
Direct mode increases Neovim load, while proxy mode makes JupyterLab exclusive, limiting real-time collaboration as noted in the mode disadvantages.
Only works with specific file patterns like *.ju.*, requiring adherence to naming conventions that may not fit existing projects without modification.