https://github.com/freddiehaddad/oxidized
⚙️ A friendly, modern re‑imagining of Vim/Neovim in pure Rust.
https://github.com/freddiehaddad/oxidized
async cli-tool copilot-integration cross-platform developer-tools extensible git-integration ide keyboard-driven lsp markdown-preview modal-editing neovim plugin-system productivity rust terminal-editor text-editor tui vim
Last synced: 18 days ago
JSON representation
⚙️ A friendly, modern re‑imagining of Vim/Neovim in pure Rust.
- Host: GitHub
- URL: https://github.com/freddiehaddad/oxidized
- Owner: freddiehaddad
- License: apache-2.0
- Created: 2025-09-10T14:27:13.000Z (about 1 month ago)
- Default Branch: master
- Last Pushed: 2025-09-20T06:44:53.000Z (24 days ago)
- Last Synced: 2025-09-20T08:36:56.425Z (24 days ago)
- Topics: async, cli-tool, copilot-integration, cross-platform, developer-tools, extensible, git-integration, ide, keyboard-driven, lsp, markdown-preview, modal-editing, neovim, plugin-system, productivity, rust, terminal-editor, text-editor, tui, vim
- Language: Rust
- Homepage:
- Size: 566 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Oxidized
⚙️ A friendly, modern re‑imagining of Vim/Neovim in pure Rust.
*Nothing is stable. Everything can change. Come build it with us.*
## Snapshot
Early—but past “toy”: real partial rendering, undo stack, registers, command stub, metrics overlay. Not a daily driver; perfect if you like shaping architecture while edges are still soft clay.
## What Works (Today)
**Core editing**: insert, backspace (cluster‑aware), newline, delete, undo/redo (run coalescing + duplicate snapshot skip).
**Motion**: `h j k l 0 $ w b`, half‑page `Ctrl-D / Ctrl-U` honoring margin.
**Unicode**: Extended grapheme clusters preserved end‑to‑end (emoji families, ZWJ, combining marks, skin tones, CJK) for cursoring, deletion, rendering.
**Registers**: Unnamed + rotation & numbered behavior; named scaffold present (write support emerging).
**Paste**: Basic unnamed register paste after cursor (early semantics).
**Command line (stub)**: `:q` to quit, `:e ` load file, `:metrics` toggle overlay. Others no‑op gracefully.
**Rendering pipeline**: cursor‑only, selective line diff, scroll‑region shift, trimmed interior diffs, status skip cache, safe full redraw fallback.
**Metrics overlay**: Counts frames, paths (cursor/lines/full/scroll), trim attempts/success, status skips, operator/register counters, cells/commands emitted.
**Tracing**: Spans around motions, edits, render cycle.
**Layout groundwork**: Single active view + future split scaffolding (no user‑visible splits yet).
**Terminal capability probe**: Scroll region detection stub gating optimizations.## Not Yet (Deliberately)
Splits (actual multiple visible views), search, syntax highlighting & theming, LSP/DAP, completion engine, git integration/mergetool, macro record/replay, plugin runtime, time‑based undo coalescing, advanced batching & diff segmentation, collaborative editing, Copilot integration. Word motions still naive by design.
## Why Start Fresh?
Clean Rust crates let rendering, text model, input, and future extension surfaces evolve without legacy ballast. Breadth‑first lets us optimize only after correctness + boundaries feel right.
## Quick Start
```console
git clone https://github.com/freddiehaddad/oxidized
cd oxidized
cargo test
cargo run
```Try: type with `i` (throw in 👨👩👧👦), backspace clusters cleanly, move around, insert newline + undo (`u`) / redo (`Ctrl-R`), open a file `:e Cargo.toml`, toggle metrics `:metrics`, quit `:q`.
## Contributing
See [CONTRIBUTING.md](CONTRIBUTING.md) (commit hooks, architecture tenets, workflow). Draft PRs & early issues welcome. Tone: breadth‑first, event‑driven, Unicode‑correct, metrics everywhere.
## Roadmap Pulse (Short Horizon)
Refine scroll + batching, flesh out registers & paste semantics, introduce search & early styling, lay real split windows, then begin syntax + extension surface.
## License
Dual: [Apache 2.0](LICENSE-APACHE.txt) OR [MIT](LICENSE-MIT.txt) — choose what you prefer.
---
If clean‑slate editor architecture, Unicode spelunking, and terminal diff shaving sound fun — star, watch, and jump in.