ild h2, .markdown-body a:first-child h3, .markdown-body a:first-child h4, .markdown-body a:first-child h5, .markdown-body a:first-child h6 {
margin-top: 0;
padding-top: 0;
}
.markdown-body h1+p, .markdown-body h2+p, .markdown-body h3+p, .markdown-body h4+p, .markdown-body h5+p, .markdown-body h6+p {
margin-top: 0;
}
.markdown-body li p.first {
display: inline-block;
}
.markdown-body ul, .markdown-body ol {
padding-left: 30px;
}
.markdown-body ul.no-list, .markdown-body ol.no-list {
list-style-type: none;
padding: 0;
}
.markdown-body ul li>:first-child, .markdown-body ul li ul:first-of-type, .markdown-body ul li ol:first-of-type, .markdown-body ol li>:first-child, .markdown-body ol li ul:first-of-type, .markdown-body ol li ol:first-of-type {
margin-top: 0px;
}
.markdown-body ul li p:last-of-type, .markdown-body ol li p:last-of-type {
margin-bottom: 0;
}
.markdown-body ul ul, .markdown-body ul ol, .markdown-body ol ol, .markdown-body ol ul {
margin-bottom: 0;
}
.markdown-body dl {
padding: 0;
}
.markdown-body dl dt {
font-size: 14px;
font-weight: bold;
font-style: italic;
padding: 0;
margin: 15px 0 5px;
}
.markdown-body dl dt:first-child {
padding: 0;
}
.markdown-body dl dt>:first-child {
margin-top: 0px;
}
.markdown-body dl dt>:last-child {
margin-bottom: 0px;
}
.markdown-body dl dd {
margin: 0 0 15px;
padding: 0 15px;
}
.markdown-body dl dd>:first-child {
margin-top: 0px;
}
.markdown-body dl dd>:last-child {
margin-bottom: 0px;
}
.markdown-body blockquote {
border-left: 4px solid #FFAD66;
padding: 0 15px;
color: #B8CFE6;
}
.markdown-body blockquote>:first-child {
margin-top: 0px;
}
.markdown-body blockquote>:last-child {
margin-bottom: 0px;
}
.markdown-body table th {
font-weight: bold;
}
.markdown-body table th, .markdown-body table td {
border: 1px solid #8A9199;
padding: 6px 13px;
}
.markdown-body table tr {
border-top: 1px solid #8A9199;
background-color: #242936;
}
.markdown-body table tr:nth-child(2n) {
background-color: #1A1F29;
}
.markdown-body img {
max-width: 100%;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.markdown-body span.frame {
display: block;
overflow: hidden;
}
.markdown-body span.frame>span {
border: 1px solid #8A9199;
display: block;
float: left;
overflow: hidden;
margin: 13px 0 0;
padding: 7px;
width: auto;
}
.markdown-body span.frame span img {
display: block;
float: left;
}
.markdown-body span.frame span span {
clear: both;
color: #CCCAC2;
display: block;
padding: 5px 0 0;
}
.markdown-body span.align-center {
display: block;
overflow: hidden;
clear: both;
}
.markdown-body span.align-center>span {
display: block;
overflow: hidden;
margin: 13px auto 0;
text-align: center;
}
.markdown-body span.align-center span img {
margin: 0 auto;
text-align: center;
}
.markdown-body span.align-right {
display: block;
overflow: hidden;
clear: both;
}
.markdown-body span.align-right>span {
display: block;
overflow: hidden;
margin: 13px 0 0;
text-align: right;
}
.markdown-body span.align-right span img {
margin: 0;
text-align: right;
}
.markdown-body span.float-left {
display: block;
margin-right: 13px;
overflow: hidden;
float: left;
}
.markdown-body span.float-left span {
margin: 13px 0 0;
}
.markdown-body span.float-right {
display: block;
margin-left: 13px;
overflow: hidden;
float: right;
}
.markdown-body span.float-right>span {
display: block;
overflow: hidden;
margin: 13px auto 0;
text-align: right;
}
.markdown-body code, .markdown-body tt {
margin: 0 2px;
padding: 0px 5px;
border: 1px solid #8A9199;
background-color: #282E3B;
border-radius: 3px;
color: #CCCAC2;
}
.markdown-body code {
white-space: nowrap;
}
.markdown-body pre>code {
margin: 0;
padding: 0;
white-space: pre;
border: none;
background: transparent;
}
.markdown-body .highlight pre, .markdown-body pre {
background-color: #282E3B;
border: 1px solid #8A9199;
font-size: 13px;
line-height: 19px;
overflow: auto;
padding: 6px 10px;
border-radius: 3px;
}
.markdown-body pre code, .markdown-body pre tt {
margin: 0;
padding: 0;
background-color: transparent;
border: none;
}
pre { line-height: 125%; }
td.linenos .normal { color: #8a919966; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: #8a919966; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.highlight .hll { background-color: #363C48 }
.highlight .c { color: #6E7C8E } /* Comment */
.highlight .err { color: #FF6666 } /* Error */
.highlight .g { color: #CCCAC2 } /* Generic */
.highlight .k { color: #FFAD66 } /* Keyword */
.highlight .o { color: #F29E74 } /* Operator */
.highlight .ch { color: #6E7C8E } /* Comment.Hashbang */
.highlight .cm { color: #6E7C8E; font-style: italic } /* Comment.Multiline */
.highlight .cp { color: #FFAD66 } /* Comment.Preproc */
.highlight .cpf { color: #D5FF80 } /* Comment.PreprocFile */
.highlight .c1 { color: #6E7C8E; font-style: italic } /* Comment.Single */
.highlight .cs { color: #6E7C8E } /* Comment.Special */
.highlight .gd { color: #F27983 } /* Generic.Deleted */
.highlight .ge { color: #FFD173; font-style: italic } /* Generic.Emph */
.highlight .gr { color: #FF6666 } /* Generic.Error */
.highlight .gh { color: #FFD173; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #87D96C } /* Generic.Inserted */
.highlight .go { color: #D5FF80 } /* Generic.Output */
.highlight .gp { color: #F29E74 } /* Generic.Prompt */
.highlight .gs { color: #FFD173; font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #CCCAC2 } /* Generic.Subheading */
.highlight .gt { color: #FF6666 } /* Generic.Traceback */
.highlight .kc { color: #DFBFFF } /* Keyword.Constant */
.highlight .kd { color: #FFCC66 } /* Keyword.Declaration */
.highlight .kn { color: #FFAD66 } /* Keyword.Namespace */
.highlight .kp { color: #FFAD66 } /* Keyword.Pseudo */
.highlight .kr { color: #FFAD66 } /* Keyword.Reserved */
.highlight .kt { color: #73D0FF } /* Keyword.Type */
.highlight .m { color: #DFBFFF } /* Literal.Number */
.highlight .s { color: #D5FF80 } /* Literal.String */
.highlight .na { color: #FFD173 } /* Name.Attribute */
.highlight .nb { color: #F28779 } /* Name.Builtin */
.highlight .nc { color: #5CCFE6 } /* Name.Class */
.highlight .no { color: #DFBFFF } /* Name.Constant */
.highlight .nd { color: #FFDFB3 } /* Name.Decorator */
.highlight .nf { color: #FFD173 } /* Name.Function */
.highlight .nt { color: #5CCFE6 } /* Name.Tag */
.highlight .ow { color: #F29E74 } /* Operator.Word */
.highlight .w { color: #CCCAC2 } /* Text.Whitespace */
.highlight .mb { color: #DFBFFF } /* Literal.Number.Bin */
.highlight .mf { color: #DFBFFF } /* Literal.Number.Float */
.highlight .mh { color: #DFBFFF } /* Literal.Number.Hex */
.highlight .mi { color: #DFBFFF } /* Literal.Number.Integer */
.highlight .mo { color: #DFBFFF } /* Literal.Number.Oct */
.highlight .sa { color: #D5FF80 } /* Literal.String.Affix */
.highlight .sb { color: #F29E74 } /* Literal.String.Backtick */
.highlight .sc { color: #D5FF80 } /* Literal.String.Char */
.highlight .dl { color: #D5FF80 } /* Literal.String.Delimiter */
.highlight .sd { color: #95E6CB; font-style: italic } /* Literal.String.Doc */
.highlight .s2 { color: #D5FF80 } /* Literal.String.Double */
.highlight .se { color: #D5FF80 } /* Literal.String.Escape */
.highlight .sh { color: #D5FF80 } /* Literal.String.Heredoc */
.highlight .si { color: #D5FF80 } /* Literal.String.Interpol */
.highlight .sx { color: #D5FF80 } /* Literal.String.Other */
.highlight .sr { color: #95E6CB } /* Literal.String.Regex */
.highlight .s1 { color: #D5FF80 } /* Literal.String.Single */
.highlight .ss { color: #D5FF80 } /* Literal.String.Symbol */
.highlight .bp { color: #F28779 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #FFD173 } /* Name.Function.Magic */
.highlight .vi { color: #FFCC66 } /* Name.Variable.Instance */
.highlight .vm { color: #5CCFE6; font-style: italic } /* Name.Variable.Magic */
.highlight .il { color: #DFBFFF } /* Literal.Number.Integer.Long */
We provide pre-built binaries on the GitHub Releases page.

Helix is available in homebrew-core:
A flake containing the package is available in
the project root. The flake can also be used to spin up a reproducible development
shell for working on Helix with nix develop.
Flake outputs are cached for each push to master using
Cachix. The flake is configured to
automatically make use of this cache assuming the user accepts
the new settings on first use.
If you are using a version of Nix without flakes enabled you can
install Cachix cli; cachix use helix will
configure Nix to use cached outputs when possible.
Releases are available in the community repository.
A helix-git package is also available on the AUR, which builds the master branch.
You can install the COPR package for Helix via
sudo dnf copr enable varlad/helix
sudo dnf install helix
Helix can be installed using Scoop, Chocolatey
or MSYS2.
Scoop:
Chocolatey:
MSYS2:
pacman -S mingw-w64-i686-helix
or
pacman -S mingw-w64-x86_64-helix
or
pacman -S mingw-w64-ucrt-x86_64-helix
git clone https://github.com/helix-editor/helix
cd helix
cargo install --path helix-term
This will install the hx binary to $HOME/.cargo/bin and build tree-sitter grammars in ./runtime/grammars.
Helix also needs its runtime files so make sure to copy/symlink the runtime/ directory into the
config directory (for example ~/.config/helix/runtime on Linux/macOS). This location can be overridden
via the HELIX_RUNTIME environment variable.
| OS |
Command |
| Windows (Cmd) |
xcopy /e /i runtime %AppData%\helix\runtime |
| Windows (PowerShell) |
xcopy /e /i runtime $Env:AppData\helix\runtime |
| Linux / macOS |
ln -s $PWD/runtime ~/.config/helix/runtime |
Starting with Windows Vista you can also create symbolic links on Windows. Note that this requires
elevated privileges - i.e. PowerShell or Cmd must be run as administrator.
PowerShell:
New-Item -ItemType SymbolicLink -Target "runtime" -Path "$Env:AppData\helix\runtime"
Cmd:
cd %appdata%\helix
mklink /D runtime "<helix-repo>\runtime"
The runtime location can be overridden via the HELIX_RUNTIME environment variable.
NOTE: if HELIX_RUNTIME is set prior to calling cargo install --path helix-term,
tree-sitter grammars will be built in $HELIX_RUNTIME/grammars.
If you plan on keeping the repo locally, an alternative to copying/symlinking
runtime files is to set HELIX_RUNTIME=/path/to/helix/runtime
(HELIX_RUNTIME=$PWD/runtime if you're in the helix repo directory).
To use Helix in desktop environments that supports XDG desktop menu, including Gnome and KDE, copy the provided .desktop file to the correct folder:
cp contrib/Helix.desktop ~/.local/share/applications
To use another terminal than the default, you will need to modify the .desktop file. For example, to use kitty:
sed -i "s|Exec=hx %F|Exec=kitty hx %F|g" ~/.local/share/applications/Helix.desktop
sed -i "s|Terminal=true|Terminal=false|g" ~/.local/share/applications/Helix.desktop
Please note: there is no icon for Helix yet, so the system default will be used.
To make sure everything is set up as expected you should finally run the helix healthcheck via
For more information on the information displayed in the health check results refer to Healthcheck.
Tree-sitter grammars must be fetched and compiled if not pre-packaged.
Fetch grammars with hx --grammar fetch (requires git) and compile them
with hx --grammar build (requires a C++ compiler).
Language servers can optionally be installed if you want their features (auto-complete, diagnostics etc.).
Follow the instructions on the wiki page to add your language servers of choice.