No description
  • Rust 80.7%
  • Tree-sitter-Query 18.4%
  • Handlebars 0.4%
  • Nix 0.2%
Find a file
2026-06-10 14:49:21 +03:00
.cargo Add hook/event system 2024-01-23 11:20:19 +09:00
.forgejo/workflows Squashed commit of the following: 2025-07-31 18:01:52 +02:00
.github fix(ci): upstream build (#135) 2025-08-23 16:51:23 +00:00
book Added markdown checkbox toggling with enter and Alt+Enter duplicates current line under 2026-05-28 01:16:39 +03:00
contrib Release 25.07.1 2025-07-18 10:31:37 -04:00
docs fix: typos (#13505) 2025-05-10 10:36:17 -05:00
helix-core feat(evil): visual line mode (#82) 2025-07-31 18:01:53 +02:00
helix-dap DAP: Support the startDebugging reverse request (#13403) 2025-06-23 09:48:05 -05:00
helix-event chore(msrv): bump from 1.76 to 1.82 (#13275) 2025-04-28 09:48:54 -05:00
helix-loader feat(ci): support windows builds (#39) 2025-07-31 18:01:53 +02:00
helix-lsp build(deps): bump the rust-dependencies group with 2 updates (#13909) 2025-07-08 08:18:37 -05:00
helix-lsp-types chore(msrv): bump from 1.76 to 1.82 (#13275) 2025-04-28 09:48:54 -05:00
helix-parsec fix(clippy): clippy 1.83 lints (#12150) 2024-12-02 08:23:32 -06:00
helix-stdx Add docs to helix-stdx, helix-tui, helix-vcs (#13765) 2025-07-12 09:48:00 -04:00
helix-term Added vimSubstitute command 2026-06-10 14:49:21 +03:00
helix-tui Squashed commit of the following: 2025-07-31 18:01:52 +02:00
helix-vcs Add docs to helix-stdx, helix-tui, helix-vcs (#13765) 2025-07-12 09:48:00 -04:00
helix-view Made Visual line mode into its own major mode with mappable keybinds 2026-05-26 20:15:04 +03:00
runtime Added a colorscheme peachpuff-kata 2026-05-28 02:51:14 +03:00
xtask Made Visual line mode into its own major mode with mappable keybinds 2026-05-26 20:15:04 +03:00
.envrc direnv: Watch changes to default.nix 2025-03-04 11:31:54 -05:00
.gitattributes Help Linguist identify Tree-sitter queries (#13436) 2025-04-29 08:28:20 -05:00
.gitignore fix: added .DS_Store to gitignore 2024-11-20 16:18:42 -06:00
base16_theme.toml base16_default: add styles to newer unthemed features (#10858) 2024-06-23 10:07:13 +09:00
Cargo.lock Release 25.07.1 2025-07-18 10:31:37 -04:00
Cargo.toml Release 25.07.1 2025-07-18 10:31:37 -04:00
CHANGELOG.md Made Visual line mode into its own major mode with mappable keybinds 2026-05-26 20:15:04 +03:00
default.nix fix: fix support for grammar overlays and include predicate (#13603) (#13613) 2025-05-26 08:47:14 -05:00
flake.lock flake: drop flake-utils dependency 2025-05-09 11:57:48 -04:00
flake.nix fix: typos (#13505) 2025-05-10 10:36:17 -05:00
grammars.nix chore: clean up grammars.nix (#13506) 2025-05-10 07:58:48 -05:00
languages.toml Update tree-sitter-go-template + highlights and Inject HTML (#14746) 2026-04-04 22:46:18 +02:00
LICENSE Add the LICENSE file. 2021-05-11 01:44:00 +09:00
logo.svg Reduce logo sizes even more (#9211) 2024-01-02 23:16:37 +01:00
logo_dark.svg Reduce logo sizes even more (#9211) 2024-01-02 23:16:37 +01:00
logo_light.svg Reduce logo sizes even more (#9211) 2024-01-02 23:16:37 +01:00
README.md Added markdown checkbox toggling with enter and Alt+Enter duplicates current line under 2026-05-28 01:16:39 +03:00
rust-toolchain.toml chore(msrv): bump from 1.76 to 1.82 (#13275) 2025-04-28 09:48:54 -05:00
rustfmt.toml Add rustfmt.toml to force formatting to use rustfmt defaults 2021-07-23 18:11:22 +09:00
screenshot.png Squashed commit of the following: 2025-07-31 18:01:52 +02:00
shell.nix build(nix): update flake deps, add default.nix file 2022-06-21 17:39:30 -05:00
theme.toml Allow theming directory prompt completions (#12205) 2024-12-17 21:13:42 -06:00

evil-helix

A soft fork of Helix which introduces Vim keybindings and more.

Build status

Screenshot


Installation

Download a package and extract it in /opt. Additionally, it's recommended to symlink it in /usr/local/bin:

cd /opt
sudo curl -Lo helix.tar.gz https://github.com/usagi-flow/evil-helix/releases/download/release-<VERSION>/helix-<ARCH>-<OS>.tar.gz
sudo tar -xf helix.tar.gz
cd /usr/local/bin
sudo ln -sv /opt/helix/hx .

Package manager

If a package is available for your system's package manager, it's the recommended way to install evil-helix.

Packaging status

Current state

These are the current differences compared to the upstream project:

  • Vim keybindings (feel free to file an issue if you're missing certain bindings):
    • Commands: a, c, d, y, x
    • Modifiers: i
    • Motions: w, W, e, E, b, B, 0, $
    • Visual line mode: V
  • Markdown support:
    • Enter in normal mode toggles checkboxes (- [ ] / - [x], also *)
    • Alt-Enter duplicates the current line below (works in both normal and insert mode)
  • Adjusted defaults (511060a):
    • The Helix "SEL" mode is called "VIS"
    • Smart tab is disabled by default
  • Basic Vim modeline support (#3)
  • Support for colored/rainbow indentation guides, opt-in: see PR (#76)
  • If color_modes is enabled, color the file type in the statusline as well (5503542)
  • Minimalistic window separator (dd990ca)

Moreover, evil-helix introduces the editor.evil option, which is true by default. It can be set to false to completely deactivate evil-helix behavior without having to use a different build:

[editor]
evil = true # Default; set this to `false` to disable evil-helix behavior

Project philosophy

Configurable features instead of plugins

This fork seeks to implement functionality as part of the editor, and make it configurable. The added functionality includes a Vim look-and-feel, but also other features.

In contrast, the upstream project, Helix, mostly limits its scope to its current core functionality, and defers further functionality to the future Scheme-based plugin system.

Compared to plugins, implementing features as part of the editor greatly improves performance, and avoids the risk of plugin compatibility issues.

Sensible defaults

In addition, sensible defaults are crucial: The editor must offer a wide range of tools for your job, but it must do what you expect an editor to do.

Avoid Scheme/Lisp

Scheme/Lisp should not be forced onto the user. It's error-prone and harder to read by humans, compared to Rust/TOML/Lua/...

If upstream Helix moves to a Scheme-based configuration, this project will seek to keep a user-friendly alternative.

Soft fork

This project is a "soft fork", i.e. it remains compatible with the upstream and regularly rebases its changes on top of the upstream master branch. New features should be carefully isolated from the upstream codebase in order to avoid conflicts.

Whether this project remains in this state will depend on how much this project's philosophy and the upstream project diverge, although a hard fork should be considered as a last resort.

Small and regular version releases

Considering the kind and frequency of changes to this repository, it makes sense to release small changes often, rather than holding features back in large releases. Releases are currently tagged on-demand.

Project goals

  • Move the project into an organization and prepare a website
  • Introduce blackbox tests (cf. #68)
  • Introduce more Vim keybindings
  • Implement more common/crucial features as part of the editor:
  • Maintain compatibility with upstream
    • Contribute features to upstream where possible
    • Ensure (through CI) that rebasing is always possible

Development

Keep in mind the main branch may be rebased onto the upstream master branch.