rhysd/vim.wasm

Vim editor ported to WebAssembly

View on GitHub ↗Jump to charts ↓

Summary Information

Updated 22 minutes ago
Added to GitGenius on September 12th, 2026
Created on July 1st, 2018
Open Issues & Pull Requests: 20 (+0)
GitHub issues: Enabled
Number of forks: 149
Total Stargazers: 5,646 (+0)
Total Subscribers: 75 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 6.4 hours
Mean response time: 100.3 days
90th percentile: 300.7 days
Tracked items: 3

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 4
New in 7 days: 0
Closed in 7 days: 0
Avg open age: 846 days
Stale 30+ days: 4
Stale 90+ days: 4

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

No label distribution available yet.

Most active issues this week

No issue events were indexed in the last 7 days.

Detailed Description

vim.wasm is a WebAssembly port of the Vim editor that runs in web browsers.

The project compiles Vim's C source code into WebAssembly using emscripten and binaryen, allowing the editor to execute on a Web Worker and communicate with the main thread via SharedArrayBuffer. This approach preserves nearly all of Vim's functionality including syntax highlighting, Vim script execution, text objects, and recent features like popup windows. Files are managed through an in-browser interface where dragging files into the browser tab opens them in Vim, the `:write` command stores changes in memory, and the `:export` command downloads files. The tool supports system clipboard integration through the `"*` register, persistent storage of configuration files in IndexedDB under `~/.vim`, and can fetch remote files via URL. Additional capabilities include evaluating JavaScript code with `:!` commands and access to vimtutor.

Adoption requires a modern desktop browser with SharedArrayBuffer support, currently Chrome, Firefox, Safari, or Chromium-based browsers, with feature flags enabled on Firefox and Safari. The project explicitly describes itself as early-phase and experimental, acknowledging bugs and incomplete behavior. It suits developers who want a familiar Vim editing experience in the browser without installing native software, though the in-memory file handling and manual browser tab closure differ from standard Vim workflows. The tool is packaged as an npm module for integration into web applications.

Development activity shows active maintenance with updates to the underlying Vim version and documented changelog entries. The project maintains clear usage documentation and provides an npm package interface for developers integrating it into larger applications. Bug reports and limitations are transparently communicated in the README, indicating ongoing refinement of the WebAssembly implementation.