Top Related Projects
A modern and intuitive terminal-based text editor
Vim-fork focused on extensibility and usability
The official Vim repository
Mirror of GNU Emacs
Lightning-fast and Powerful Code Editor written in Rust
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
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.
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
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.
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)
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.
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 designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
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.
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
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!
Top Related Projects
A modern and intuitive terminal-based text editor
Vim-fork focused on extensibility and usability
The official Vim repository
Mirror of GNU Emacs
Lightning-fast and Powerful Code Editor written in Rust
A modern editor with a backend written in Rust.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot