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. If you want to learn more about the design of helix; see our vision.
For more information, see the website or documentation.
All shortcuts/keymaps can be found on the website.
- 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. See #39 for more info.
Note: Installing from source requires extra configuration for syntax highlighting and themes to work. See runtime.
Having trouble? Check out the troubleshooting section.
Pre-build binaries are available in the releases page.
Packages are also available:
Helix can be installed on macOS through homebrew:
brew tap helix-editor/helix
brew install helix
git clone --recurse-submodules --shallow-submodules -j8 https://github.com/helix-editor/helix
cd helix
cargo install --path helix-term
This will install the hx
binary to $HOME/.cargo/bin
.
Note: Installing runtime is not required for linux packages or binaries.
Helix requires extra files for syntax highlighting and themes. To install, symlink the runtime/
folder to the directory below.
OS | Path |
---|---|
Linux & MacOS | ~/.config/helix/ |
Windows | Appdata/Roaming/Helix |
For example: ~/.config/helix/runtime
The runtime directory can be overridden via the HELIX_RUNTIME
environment variable.
Running via cargo also doesn't require setting explicit HELIX_RUNTIME
path, it will automatically
detect the runtime
directory in the project root.
Setting up runtime is not required for linux. Packages wrap the hx
binary
with a wrapper that sets HELIX_RUNTIME to the install directory.
Contributors are very welcome! No contribution is too small and all contributions are valued!
Some suggestions to get started:
- You can look at the good first issue label on the issue tracker.
- Help with packaging on various distributions needed!
- To use print debugging to the
~/.cache/helix/helix.log
file, you must:- Print using
log::info!
,warn!
, orerror!
. (log::info!("helix!")
) - Use the parameter (
hx -v <file>
) to increase log verbosity. Increase thev's
for more info,hx -vvv
being most verbose.
- Print using
- If your preferred language is missing, integrating a tree-sitter grammar for it and defining syntax highlight queries for it is straight forward and doesn't require much knowledge of the internals.
We provide an architecture.md that should give you a good overview of the internals.
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).