Open-Awesome
CategoriesAlternativesStacksSelf-HostedExplore
Open-Awesome

© 2026 Open-Awesome. Curated for the developer elite.

TermsPrivacyAboutGitHubRSS
  1. Home
  2. JavaScript
  3. vim.js

vim.js

NOASSERTIONC

A JavaScript port of Vim that runs in web browsers with ASM.js, persistent configuration, and local file access.

Visit WebsiteGitHubGitHub
4.4k stars265 forks0 contributors

What is vim.js?

Vim.js is a JavaScript port of the Vim text editor that runs in web browsers using ASM.js compilation. It provides the core Vim editing experience with modal editing, commands, and configuration while enabling integration with web technologies like JavaScript execution and cloud storage access. The project solves the problem of bringing powerful terminal-based text editing to browser environments.

Target Audience

Vim users who want to edit text in web browsers with familiar Vim keybindings, and developers interested in porting complex C applications to the web using Emscripten and ASM.js.

Value Proposition

Developers choose Vim.js because it offers the most authentic Vim experience available in a browser, with persistent configuration, local file access, and the ability to execute JavaScript from within the editor. Unlike simple Vim keybinding libraries, it's an actual port of Vim with its full editing engine.

Overview

JavaScript port of Vim

Use Cases

Best For

  • Using Vim keybindings for text editing directly in web browsers
  • Experimenting with porting complex C applications to JavaScript via Emscripten
  • Editing configuration files or code snippets in browser-based development environments
  • Accessing and editing files from Dropbox using Vim commands
  • Learning about ASM.js performance optimization for web applications
  • Creating browser extensions that provide Vim editing capabilities

Not Ideal For

  • Projects requiring the full Vim feature set for advanced editing workflows, such as syntax highlighting for numerous languages
  • Teams needing a plug-and-play text editor with minimal setup and configuration effort
  • Applications targeting browsers without robust ASM.js support or requiring consistent performance across all platforms

Pros & Cons

Pros

ASM.js Performance

Compiled to ASM.js for near-native speed in supported browsers like Firefox and Chrome, enabling smooth modal editing without heavy lag.

Persistent Configuration

Saves ~/.vimrc settings across sessions, allowing users to maintain custom keybindings and preferences as in terminal Vim.

JavaScript Integration

Supports executing JavaScript code directly from within Vim, bridging traditional editing with web-specific functionality and extensions.

Flexible Deployment Options

Available as NW.js desktop app, Firefox extension, and web versions, offering multiple ways to integrate Vim into different environments.

Cons

Complex Build Process

Requires emscripten with ASYNCIFY, GCC, cproto, and high memory, making setup difficult for developers without specialized tooling.

Reduced Feature Set

Uses a small feature set for online demos; the normal Vim feature set is too large and slow, limiting advanced editing capabilities.

Limited Browser Support

Optimized for Firefox, Chrome, and IE; performance and compatibility may degrade in unsupported or older browsers.

Frequently Asked Questions

Quick Stats

Stars4,441
Forks265
Contributors0
Open Issues17
Last commit10 years ago
CreatedSince 2013

Tags

#emscripten#vim#asm-js#text-editor#dropbox-integration#modal-editing#browser-tool#web-application

Built With

E
Emscripten
a
asm.js
n
nw.js
J
JavaScript

Links & Resources

Website

Included in

JavaScript34.9k
Auto-fetched 1 day ago

Related Projects

quillquill

Quill is a modern WYSIWYG editor built for compatibility and extensibility

Stars47,380
Forks3,669
Last commit1 year ago
CodeMirrorCodeMirror

In-browser code editor (version 5, legacy)

Stars27,201
Forks4,923
Last commit6 months ago
aceace

Ace (Ajax.org Cloud9 Editor)

Stars27,130
Forks5,260
Last commit1 day ago
Draft.jsDraft.js

A React framework for building text editors.

Stars22,565
Forks2,591
Last commit3 years ago
Community-curated · Updated weekly · 100% open source

Found a gem we're missing?

Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.

Submit a projectStar on GitHub