usagi-flow/evil-helix


Bringing the Helix editor to the evil side

https://github.com/usagi-flow/helix

License: MPL-2.0

Language: Rust

Keywords: cli, command-line, editor, helix, ide, vim


evil-helix

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

Build status

Screenshot


Important

This project often integrates the latest Helix changes, but should be stable enough for daily usage.

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 .

Arch Linux

evil-helix-bin is available in the AUR and can be installed using your favorite AUR helper. E.g.:

paru -S evil-helix-bin

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: c, d, y, x
    • Modifiers: i
    • Motions: w, 0, $
  • Basic Vim modeline support (#3)
  • Adjusted defaults (511060a):
    • The Helix "SEL" mode is called "VIS"
    • The default theme is catppuccin_macchiato
    • Smart tab is disabled by default
  • If color_modes is enabled, color the file type in the statusline as well (5503542)
  • Minimalistic window separator (dd990ca)

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

  • Consider a better name for this project
    • Move the project into an organization
  • Improve and stabilize the CI
  • 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 is regularly being rebased onto the upstream master branch.

Project Statistics

Sourcerank 6
Repository Size 19.5 MB
Stars 204
Forks 3
Watchers 1
Open issues 9
Dependencies 0
Contributors 417
Tags 24
Created
Last updated
Last pushed

Top Contributors See all

Blaž Hrastnik dependabot[bot] Michael Davis Pascal Kuthe Gokul Soumya Dmitry Sharshakov Nathan Vegdahl Ivan Tham Skyler Hawthorne Wojciech Kępka Kirawi Jan Hrastnik Philipp Mildenberger Omnikar A-Walrus Erasin Wang 兎の流れ Matouš Dzivjak Joe Mckay ath3

Recent Tags See all

release-20240618 June 18, 2024
release-20240601 June 01, 2024
release-20240524 May 24, 2024
release-20240521 May 21, 2024
release-20240519 May 19, 2024
release-20240517 May 17, 2024
feat-evil-base May 14, 2024
22.03 March 29, 2022
v0.6.0 January 04, 2022
v0.5.0 October 28, 2021
v0.4.1 August 14, 2021
v0.4.0 August 12, 2021
v0.3.0 June 27, 2021
v0.2.1 June 14, 2021
v0.2.0 June 13, 2021

Something wrong with this page? Make a suggestion

Last synced: 2024-07-05 08:07:31 UTC

Login to resync this repository