Convert Figma logo to code with AI

helix-editor logohelix

A post-modern modal text editor.

33,367
2,472
33,367
890

Top Related Projects

25,033

A modern and intuitive terminal-based text editor

82,552

Vim-fork focused on extensibility and usability

36,358

The official Vim repository

4,412

Mirror of GNU Emacs

34,207

Lightning-fast and Powerful Code Editor written in Rust

19,822

A modern editor with a backend written in Rust.

Quick Overview

Helix is a post-modern text editor, designed to be fast, lightweight, and highly customizable. It's inspired by Vim and written in Rust, aiming to provide a modal editing experience with modern features like multiple selections, tree-sitter integration, and LSP support.

Pros

  • Fast and efficient, with a low memory footprint
  • Highly customizable with a powerful configuration system
  • Built-in LSP support for intelligent code completion and analysis
  • Tree-sitter integration for improved syntax highlighting and code navigation

Cons

  • Steeper learning curve for users not familiar with modal editing
  • Smaller ecosystem compared to more established editors like Vim or Emacs
  • Limited plugin system compared to some other editors
  • May lack some specific features found in larger, more mature editors

Getting Started

To install Helix on Unix-like systems:

# Clone the repository
git clone https://github.com/helix-editor/helix
cd helix

# Build and install
cargo install --path helix-term

# Add Helix to your PATH
echo 'export PATH="$PATH:$HOME/.cargo/bin"' >> ~/.bashrc
source ~/.bashrc

# Run Helix
hx

For other installation methods and platforms, refer to the official documentation.

Competitor Comparisons

25,033

A modern and intuitive terminal-based text editor

Pros of Micro

  • Easier learning curve for beginners
  • More familiar keybindings for users coming from traditional editors
  • Built-in terminal emulator for quick command execution

Cons of Micro

  • Less powerful editing capabilities compared to modal editors
  • Fewer advanced features for power users
  • Limited extensibility options

Code Comparison

Micro configuration (in ~/.config/micro/settings.json):

{
    "colorscheme": "solarized",
    "tabsize": 4,
    "autoindent": true
}

Helix configuration (in ~/.config/helix/config.toml):

theme = "solarized_light"

[editor]
line-number = "relative"
cursorline = true

Micro focuses on simplicity and ease of use, making it a good choice for users who prefer a traditional text editor experience. It offers familiar keybindings and a built-in terminal emulator, which can be convenient for quick tasks.

Helix, on the other hand, is a modal editor inspired by Vim and Kakoune. It provides more powerful editing capabilities and is designed for efficiency, but has a steeper learning curve. Helix offers advanced features like multiple selections and structural regular expressions, making it more suitable for power users and developers who prioritize editing speed and flexibility.

82,552

Vim-fork focused on extensibility and usability

Pros of Neovim

  • Extensive plugin ecosystem with a large community
  • Highly customizable with Lua scripting
  • Backward compatibility with Vim

Cons of Neovim

  • Steeper learning curve for beginners
  • Configuration can be complex and time-consuming

Code Comparison

Neovim configuration (init.lua):

vim.opt.number = true
vim.opt.relativenumber = true
vim.opt.expandtab = true
vim.opt.shiftwidth = 2

Helix configuration (config.toml):

[editor]
line-number = "relative"
cursorline = true
mouse = false
auto-indent = true

Key Differences

  • Helix is written in Rust, while Neovim is primarily written in C and Lua
  • Helix has a more opinionated, out-of-the-box experience
  • Neovim offers more flexibility but requires more setup
  • Helix uses a unique selection-based editing model
  • Neovim maintains compatibility with Vim plugins and configurations
36,358

The official Vim repository

Pros of Vim

  • Extensive plugin ecosystem and customization options
  • Widely available on most systems by default
  • Large, established community and extensive documentation

Cons of Vim

  • Steeper learning curve due to modal editing and complex key bindings
  • Configuration can be complex and time-consuming
  • Less modern features out-of-the-box compared to newer editors

Code Comparison

Vim configuration (.vimrc):

set nocompatible
filetype plugin indent on
syntax enable
set number
set expandtab

Helix configuration (config.toml):

theme = "gruvbox"
editor.line-number = "relative"
editor.cursor-shape.insert = "bar"
editor.auto-indent = true
editor.indent-guides.render = true

Summary

Vim is a highly customizable, traditional text editor with a large ecosystem and community. It offers extensive features through plugins but can be complex to learn and configure. Helix, on the other hand, is a modern, modal text editor inspired by Vim but with a focus on simplicity and out-of-the-box functionality. Helix aims to provide a more streamlined experience with built-in language server support and a simpler configuration process, making it potentially more accessible for new users while still offering powerful editing capabilities.

4,412

Mirror of GNU Emacs

Pros of Emacs

  • Extensive customization options and a powerful Lisp-based extension system
  • Large ecosystem of packages and modes for various programming languages and tasks
  • Long-standing community support and continuous development since 1976

Cons of Emacs

  • Steeper learning curve, especially for users new to Lisp programming
  • Slower startup time compared to Helix, particularly with many extensions loaded
  • Less modern default UI and keybindings, which may feel outdated to some users

Code Comparison

Emacs (Lisp):

(defun hello-world ()
  (interactive)
  (message "Hello, World!"))

Helix (Rust):

fn hello_world() {
    println!("Hello, World!");
}

Key Differences

  • Emacs is highly extensible and customizable, while Helix focuses on a more opinionated, out-of-the-box experience
  • Helix is written in Rust and emphasizes performance, whereas Emacs is primarily written in C and Lisp
  • Emacs has a vast ecosystem of packages and modes, while Helix has a more curated set of built-in features
  • Helix adopts a modal editing approach similar to Vim, while Emacs traditionally uses chord-based keybindings (though it can be configured for modal editing)
34,207

Lightning-fast and Powerful Code Editor written in Rust

Pros of Lapce

  • Built with Rust and uses GPU acceleration, potentially offering better performance
  • Supports remote development out of the box
  • Has a more modern, VS Code-like user interface

Cons of Lapce

  • Less mature project with fewer contributors and a smaller community
  • Fewer language-specific features and plugins compared to Helix
  • May have more bugs and stability issues due to its earlier development stage

Code Comparison

Lapce configuration (keymap.toml):

[keymaps]
normal = { 
    "ctrl+s" = "core:save",
    "ctrl+f" = "core:search"
}

Helix configuration (config.toml):

[keys.normal]
C-s = ":w"
C-f = ":search"

Both editors use TOML for configuration, but Lapce's syntax is slightly more verbose. Helix uses a more compact format for keybindings, while Lapce separates them into distinct sections.

Lapce and Helix are both modern, Rust-based text editors with modal editing capabilities. Lapce offers a more familiar interface for VS Code users and built-in remote development support. Helix, on the other hand, has a larger community and more extensive language support. The choice between them depends on personal preferences and specific use cases.

19,822

A modern editor with a backend written in Rust.

Pros of Xi-editor

  • Designed with a client-server architecture, allowing for better separation of concerns and potential for multiple frontends
  • Implemented in Rust, offering memory safety and performance benefits
  • Supports incremental parsing and asynchronous operations for improved responsiveness

Cons of Xi-editor

  • Development has been largely inactive since 2020, with fewer recent updates and contributions
  • Less feature-rich out of the box compared to Helix, requiring more setup for advanced functionality
  • Steeper learning curve due to its unique architecture and design philosophy

Code Comparison

Xi-editor (core editing logic):

pub fn insert(&mut self, s: &str) -> EditResult {
    self.this_edit_type = EditType::Insert;
    let mut builder = Delta::builder();
    for c in s.chars() {
        self.insert_char_internal(c, &mut builder);
    }
    self.apply_edit(builder.build())
}

Helix (insert mode handling):

pub fn insert(&mut self, ctx: &mut Context) -> anyhow::Result<()> {
    ctx.editor.start_operation();
    let view = ctx.editor.view_mut();
    let doc = view.doc_mut();
    doc.insert(view.cursor(), ctx.count.unwrap_or(1), ctx.register.as_deref());
    ctx.editor.commit_undo();
    Ok(())
}

Both editors implement insertion logic, but Xi-editor's approach is more low-level, dealing with individual characters and delta operations, while Helix's implementation is higher-level, leveraging existing document and view abstractions.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Helix

Build status GitHub Release Documentation GitHub contributors Matrix Space

Screenshot

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.

Troubleshooting

Features

  • Vim-like modal editing
  • Multiple selections
  • Built-in language server support
  • Smart, incremental syntax highlighting and code editing via tree-sitter

It's a terminal-based editor first, but I'd like to explore a custom renderer (similar to Emacs) in wgpu or skulpin.

Note: Only certain languages have indentation definitions at the moment. Check runtime/queries/<lang>/ for indents.scm.

Installation

Installation documentation.

Packaging status

Contributing

Contributing guidelines can be found here.

Getting help

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).

Credits

Thanks to @jakenvac for designing the logo!