# glacambre/firenvim

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/glacambre-firenvim).**

6,068 stars · 156 forks · TypeScript · GPL-3.0

## Links

- GitHub: https://github.com/glacambre/firenvim
- awesome-repositories: https://awesome-repositories.com/repository/glacambre-firenvim.md

## Description

Firenvim is a browser integration and plugin that replaces web text areas and input fields with a full Neovim editor instance. It acts as a web-based text editor that synchronizes Neovim buffers with browser DOM elements to enable advanced text manipulation and web content authoring.

The system utilizes a bidirectional buffer synchronizer to automatically update browser input fields as the editor buffer is modified. It includes a browser DOM manipulator for executing JavaScript expressions and simulating keyboard events on web pages directly from the editor environment. For security, an external process sandbox isolates the editor instance from the host operating system.

The project covers contextual configuration management, allowing editor settings and filename generation to be determined by URLs, domains, or CSS selectors. It also provides control over element takeover triggers, keystroke filtering for native browser shortcuts, and options to handle content as either plain text or raw HTML.

## Tags

### Development Tools & Productivity

- [Browser-to-Editor Synchronization](https://awesome-repositories.com/f/development-tools-productivity/bidirectional-field-synchronization/browser-to-editor-synchronization.md) — Acts as the primary communication bridge for real-time mirroring of text between web input fields and an external editor.
- [Neovim Plugins](https://awesome-repositories.com/f/development-tools-productivity/neovim-plugins.md) — Provides a browser extension and plugin that integrates Neovim as a replacement for web text areas.
- [DOM-Based Text Manipulations](https://awesome-repositories.com/f/development-tools-productivity/text-buffer-manipulations/dom-based-text-manipulations.md) — Modifies the browser DOM by synchronizing external Neovim buffers with web input elements.
- [Neovim-Based Editors](https://awesome-repositories.com/f/development-tools-productivity/text-editors/neovim-based-editors.md) — Implements an editing interface that uses Neovim as the core engine for manipulating web-based text content.
- [Browser-Based Workflows](https://awesome-repositories.com/f/development-tools-productivity/workflow-automation-engines/browser-based-workflows.md) — Enables the execution of JavaScript and keyboard event simulation on web pages directly from the editor.

### User Interface & Experience

- [Browser-Embedded Editors](https://awesome-repositories.com/f/user-interface-experience/text-editing-components/browser-embedded-editors.md) — Injects a full-featured Neovim editing interface into web input fields to replace basic text area capabilities. ([source](https://github.com/glacambre/firenvim/blob/master/package.json))
- [Content Editable Proxies](https://awesome-repositories.com/f/user-interface-experience/content-editable-proxies.md) — Replaces browser input fields with a hidden content-editable proxy to capture keystrokes and synchronize state.
- [Input Takeover Mechanisms](https://awesome-repositories.com/f/user-interface-experience/css-selectors/customizable-element-selectors/takeover-element-selection/input-takeover-mechanisms.md) — Replaces standard browser text areas with hidden editable elements to capture keystrokes and trigger the editor.
- [Text Editing Components](https://awesome-repositories.com/f/user-interface-experience/text-editing-components.md) — Replaces standard browser text areas and input fields with a high-performance text editor component. ([source](https://github.com/glacambre/firenvim#readme))
- [Takeover Element Selection](https://awesome-repositories.com/f/user-interface-experience/css-selectors/customizable-element-selectors/takeover-element-selection.md) — Defines which HTML elements are replaced by the editor using CSS selectors and replacement triggers. ([source](https://github.com/glacambre/firenvim/blob/master/README.md))
- [Takeover Trigger Controls](https://awesome-repositories.com/f/user-interface-experience/css-selectors/customizable-element-selectors/takeover-trigger-controls.md) — Controls whether text fields are replaced automatically, only when empty, or via manual keyboard shortcuts. ([source](https://github.com/glacambre/firenvim#readme))
- [Element Target Resolution](https://awesome-repositories.com/f/user-interface-experience/css-selectors/element-target-resolution.md) — Uses CSS selectors and URL patterns to identify specific HTML elements to be replaced by the editor.
- [DOM Manipulators](https://awesome-repositories.com/f/user-interface-experience/dom-manipulators.md) — Provides tools to programmatically execute scripts and simulate events to modify the browser's document object model.
- [Activation Triggers](https://awesome-repositories.com/f/user-interface-experience/imperative-editor-instance-access/independent-editor-instances/editor-instance-control/activation-triggers.md) — Determines when the editor interface activates based on element state, CSS selectors, and URLs. ([source](https://github.com/glacambre/firenvim#readme))

### Content Management & Publishing

- [Web Authoring Interfaces](https://awesome-repositories.com/f/content-management-publishing/web-authoring-interfaces.md) — Allows using a full Neovim instance to author and refine long-form content directly within browser text areas.
- [Content Exchange Formats](https://awesome-repositories.com/f/content-management-publishing/content-formats-exporting/content-formats/content-exchange-formats.md) — Allows configuring whether content is synchronized between the editor and web elements as plain text or raw HTML. ([source](https://github.com/glacambre/firenvim/blob/master/README.md))

### Software Engineering & Architecture

- [Buffer State Synchronization](https://awesome-repositories.com/f/software-engineering-architecture/buffer-state-synchronization.md) — Implements real-time synchronization of text buffers between the Neovim editor and browser input fields. ([source](https://github.com/glacambre/firenvim#readme))
- [Inter-Process Message Passing](https://awesome-repositories.com/f/software-engineering-architecture/integration-extensibility/workflow-automation-integrations/external-application-integrations/child-process-execution/inter-process-message-passing.md) — Provides a communication bridge for exchanging state and commands between the browser extension and the external editor process.

### DevOps & Infrastructure

- [URL-Based Behavioral Configuration](https://awesome-repositories.com/f/devops-infrastructure/environment-grouping/configuration-set-grouping/contextual-configuration-filters/url-based-behavioral-configuration.md) — Adjusts editor behavior and settings automatically based on the current domain, URL, or HTML element.

### Security & Cryptography

- [Editor Sandboxes](https://awesome-repositories.com/f/security-cryptography/editor-sandboxes.md) — Isolates the Neovim editor process from the host operating system using security profiles to restrict system access.
- [Process Sandboxing](https://awesome-repositories.com/f/security-cryptography/process-sandboxing.md) — Uses security profiles to isolate the external editor process from the host operating system.

### Web Development

- [HTML Content Management](https://awesome-repositories.com/f/web-development/html-content-management.md) — Provides the ability to fetch and modify the content of web elements specifically as raw HTML. ([source](https://github.com/glacambre/firenvim#readme))
