Zen Note Text Editor
A rich text, distraction-free editor with native Vim modal navigation.
Motivation
As an avid user of Vim, I wanted to bring its efficiency and keyboard-driven workflow to my daily writing tasks, such as composing emails and taking notes. However, existing solutions fell short: Vim keybindings in code editors are not optimized for prose (often failing with word wrap), and traditional word processors like Google Docs or MS Word lack modal editing entirely. Zen Note was built to fill this gap.
Core Problem
To create a seamless user experience, the application needed to solve two key problems:
- Implement a Vim motions for navigation and manipulation within a word-wrapped, rich text environment.
- Provide an intuitive interface for applying rich text formatting (e.g., bold, italics, lists, font sizing) without breaking the Vim workflow.
Technical Decisions
After discovering that a browser plugin would not provide the necessary low-level control, I opted for a desktop application using the following stack:
- Python: Chosen for its speed of development and extensive libraries, allowing for rapid prototyping and iteration.
- Qt (via PyQt/PySide): Selected for its powerful and mature QTextDocument API, which provides a solid foundation for rich text processing. This allowed me to offload the complexities of text rendering and focus on implementing the application's core logic and Vim features.
Source can be found on GitHub Here