Skip to content

aashan10/browservim

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

nvim.ts

A powerful, extensible browser-based text editor inspired by Neovim, featuring a complete plugin architecture with Telescope-style fuzzy finding, built from scratch with TypeScript and a custom reactivity system.

Purpose

This project is an educational exercise to explore the core concepts of a modern text editor and the architectural patterns behind a complex frontend application. It aims to deconstruct and implement fundamental features of Vim/Neovim, such as modal editing, a reactive UI, and a flexible keymapping system, all while being completely self-contained with zero runtime dependencies.

Getting Started

  1. Install dependencies:
    npm install
  2. Run the development server:
    npm run dev

Documentation

The architecture is designed to be modular and extensible. Learn more about the internal components in the documentation below.

File Description
OVERVIEW.md A high-level look at the application architecture and data flow.
REACTIVITY.md An explanation of the custom reactivity system that powers the UI.
STATE.md How global reactive state is managed.
RENDERER.md How the editor is drawn onto the HTML canvas.
STATUS_BAR.md How the extensible status bar is managed and rendered.
INPUT_MANAGER.md How keyboard input and Vim's command sequences are processed.
KEYMAPS.md How to define and manage keybindings for different modes.
BUFFER.md The data structure for holding and manipulating text.
CURSOR.md The logic for cursor state and movement.
CONTAINER.md The dependency injection container used to wire services together.
EVENT_BUS.md The simple pub/sub system for decoupled communication.
EXTENDING.md A guide on how to add new features and commands.
TODO.md A list of planned features and ideas for the future.

About

A VIM like editor implemented for browser

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published