A Kakoune / Neovim inspired editor, written in Rust.
The editing model is very heavily based on Kakoune; during development I found myself agreeing with most of Kakoune's design decisions.
For more information, see the website or documentation.
All shortcuts/keymaps can be found in the documentation on the website.
This repo tracks mattwparas/helix's
steel-event-system branch (upstream Helix plus the
Steel plugin system, customizable
statusline, and code actions on save) and adds the following on top:
- File watching with external-change auto-reload — unmodified buffers
reload automatically when their files change on disk (macOS backend via
filesentry); modified buffers surface a conflict warning instead
(
helix-view/src/document.rs,[editor.auto-reload]). - Vim-style handling of externally deleted files — when an open file is
deleted from disk the buffer is kept and marked modified rather than
closed;
:wrecreates the file. - Snappy
:qwith LSP servers running — the shutdown flush wait is capped so quitting no longer hangs ~1s per language server. - Image and PDF rendering in the editor —
:openon an image (png/jpeg/gif/webp/svg/…) or PDF renders it in the view via the kitty graphics protocol (unicode placeholder placements), scaled to fit, aspect-preserved, read-only. PDFs page withh/k(previous) andj/l(next) — arrow keys too — plus:media-next-page,:media-prev-page, and:media-goto-page N(bindable like any typable command). Auto-detected on kitty/ghostty-family terminals; configurable witheditor.image-rendering = "auto" | "kitty" | "disabled". PDF pages rasterize throughpdftoppm(poppler); non-PNG images convert throughmagick/convert/sips, whichever is present. Terminals without graphics support get a text fallback instead of binary garbage. - Steel/event fixes —
send_blockingno longer panics without a tokio reactor; Steel pinned past a thread-spawning bug.
- Vim-like modal editing
- Multiple selections
- Built-in language server support
- Smart, incremental syntax highlighting and code editing via tree-sitter
Although it's primarily a terminal-based editor, I am interested in exploring a custom renderer (similar to Emacs) using wgpu.
Note: Only certain languages have indentation definitions at the moment. Check
runtime/queries/<lang>/ for indents.scm.
Contributing guidelines can be found here.
Your question might already be answered on the FAQ.
Discuss the project on the community Matrix Space (make sure to join #helix-editor:matrix.org if you're on a client that doesn't support Matrix Spaces yet).
Thanks to @jakenvac for designing the logo!
