A post-modern modal text editor.
 
 
 
 
 
Go to file
Michael Davis 91d2725db1
Add a very small owned string type for the word index
`TinyBoxedStr` is a small-string optimized replacement for `Box<str>`
styled after <https://cedardb.com/blog/german_strings/>. A nearly
identical type is used in helix-editor/spellbook for space savings.

This type is specialized for its use-case:

* strings are immutable after creation
* strings are very very small (less than 256 bytes long)

Because of these attributes we can use nearly the full size of the type
for the inline representation and also keep a small total size. Many
other small string crates in the wild are 3 `usize`s long (same as a
regular `String`) to support mutability. This type is more like a
`Box<str>` (2 `usize`s long).

Mostly I like this small string type though because it's very
straightforward to implement. Other than a few functions that reach into
`std::alloc` or `std::ptr`, the code is short and boring.
2025-05-14 10:23:13 -04:00
.cargo Add hook/event system 2024-01-23 11:20:19 +09:00
.github chore(msrv): bump from 1.76 to 1.82 (#13275) 2025-04-28 09:48:54 -05:00
book Complete words from open buffers 2025-05-14 10:23:13 -04:00
contrib feat: add ConsoleOnly to desktop entry categories (#13236) 2025-03-31 09:28:50 -05:00
docs fix: typos (#13505) 2025-05-10 10:36:17 -05:00
helix-core Complete words from open buffers 2025-05-14 10:23:13 -04:00
helix-dap syntax: Move config types to a separate module 2025-05-13 18:30:21 -04:00
helix-event chore(msrv): bump from 1.76 to 1.82 (#13275) 2025-04-28 09:48:54 -05:00
helix-loader Replace tree-sitter with tree-house 2025-05-13 18:43:43 -04:00
helix-lsp syntax: Move config types to a separate module 2025-05-13 18:30:21 -04: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 a very small owned string type for the word index 2025-05-14 10:23:13 -04:00
helix-term Complete words from open buffers 2025-05-14 10:23:13 -04:00
helix-tui build(deps): bump the rust-dependencies group with 5 updates (#13070) 2025-03-11 08:29:38 -05:00
helix-vcs build(deps): bump the rust-dependencies group with 3 updates (#13437) 2025-04-29 10:48:45 +09:00
helix-view Add a very small owned string type for the word index 2025-05-14 10:23:13 -04:00
runtime Add nyxvamp themes (#12185) 2025-05-14 08:52:00 -05:00
xtask Replace tree-sitter with tree-house 2025-05-13 18:43:43 -04: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
CHANGELOG.md Fix typos (#12690) 2025-02-02 18:58:29 -06:00
Cargo.lock Replace tree-sitter with tree-house 2025-05-13 18:43:43 -04:00
Cargo.toml Replace tree-sitter with tree-house 2025-05-13 18:43:43 -04:00
LICENSE Add the LICENSE file. 2021-05-11 01:44:00 +09:00
README.md Fix repology badge (#11895) 2024-10-16 01:52:50 +09:00
base16_theme.toml base16_default: add styles to newer unthemed features (#10858) 2024-06-23 10:07:13 +09:00
default.nix default.nix: remove ellipsis in argument attrset 2025-05-09 11:57:48 -04: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 Revert "feat: Highlight Rust String interpolation macros" 2025-05-13 19:52:48 -04: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
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 update screenshot (#1879) 2022-03-30 00:16:57 +09: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

README.md

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

Although it's primarily a terminal-based editor, I am interested in exploring a custom renderer (similar to Emacs) using 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!