NeoVim Too Complex? Try Helix as Your First Modal Editor

Helix is an underrated gem when it comes to modal editors like Vim and Neovim.
Warp Terminal

Helix is a modal text editor that operates much like Vim or Neovim. While switching from a GUI like VSCode takes some practice, mastering a terminal editor truly boosts your daily productivity.

Starting with Helix is a smooth experience if you have never used modal editors before. The default settings are intuitive, provided you are familiar with your keyboard layout.

You can avoid the hassle of learning a specific programming language just to configure your workspace. Helix delivers a complete and powerful experience right after you install it.

In my opinion, I suggest Helix if you want the Neovim vibe without the massive time investment. It includes modern tools like language server protocols and tree sitter support by default.

🚧
Helix does not have a plugin system at the moment.

Let's look at how you can get started with Helix as your very first modal text editor.

Installing Helix

Helix is available in the official repositories for several Linux distributions, like Arch Linux, Fedora, and Ubuntu. To install it on Arch Linux, use the command:

sudo pacman -S helix

If you are a Fedora user, install the editor with:

sudo dnf install helix

Ubuntu 26.04 LTS and above also includes Helix in its official repositories. You can install it using:

sudo apt install hx
πŸ“‹
In Ubuntu, the command name is hx and not helix.

For all other users, pre-built binaries are available in the official Helix GitHub repository. You can follow the official documentation to complete the installation of these binaries.

Modes in Helix

Helix is a modal editor. It means Helix has different modes with dedicated purposes.

Without having an understanding of the modes, it is hard to grasp how the editor works. So, let's see them one by one.

πŸ’‘
Unlike Vim, Helix follows a select β†’ action model. You always highlight text first, then perform an operation on it. If something feels backwards coming from Vim, this is likely why.

The Normal Mode

Normal mode is the default state in most modal text editors, where you perform all text manipulations.

Whenever you are elsewhere in the editor, simply press the ESC key to return to this home base. Unlike a traditional editor where you are always in a typing state, modal editors use this mode as a starting point.

For example, you can scroll down a couple of lines by pressing j while in normal mode. You can also remove a character under the cursor by pressing d.

You cannot type any text while you are in this Normal mode. To start typing, you must enter insert mode by pressing i while the editor is in its normal state.

The Insert Mode

Insert mode is the state where you actually type your text. Most traditional GUI editors, like VSCode, have this mode only where all text actions are carried out with the help of keyboard and mouse.

While in insert mode, you generally focus on entering text rather than deleting or copying it. You can still use the arrow keys to move the cursor around in both normal and insert modes.

Whenever you finish typing, simply press ESC to return to normal mode.

πŸ’‘
Some other text actions are supported in Insert mode, which takes help of the CTRL and ALT key. Take a look at the documentation for these commands in insert mode.

Select Mode

Select mode is the equivalent of Visual mode in Vim and is used specifically for highlighting text. You enter this mode by pressing v while in the Normal mode.

The character under your cursor is automatically selected as soon as you enter this mode. You then use navigation keys to extend that selection across your text.

For example, pressing l will extend the selection to the next character, and pressing it again adds the third. You cannot type any new text while you are in this state.

In my experience, combining this with movement shortcuts is incredibly powerful. For instance, I can press v followed by ge to instantly select everything from my cursor to the last line.

You can even press the END key to include the entire last line in your selection. This allows you to highlight massive blocks of text with just a few keystrokes.

Once your selection is finished, use the Normal mode keys to perform an action.

🚧
In Select mode, you can directly apply operators like d, y, c on your selection. No need to press Escape first. The operator acts on the selection and drops you back into Normal mode.

Pressing d will delete the entire highlighted block, while y will copy it for later use.

Other modes of purpose

The above three are the main modes in Helix. But there are some more modes that you may come across.

Command Mode

When you press : in normal mode, you enter the command mode. Here, you can enter supported commands.

Some important operations, like saving a file, quitting the editor, etc., are performed in the command mode.

To save the current file, and quit the editor:

:wq

Helix offers a lot of commands that you can use. Its official documentation on commands has listed it more efficiently.

Picker Mode

Picker mode is triggered by pressing the Space key in normal mode. It is a fuzzy finder interface, where you can invoke a file picker, buffer picker, etc.

If you know Neovim, this picker mode can be a minimal close equivalent of the Telescope plugin.

For example, we can use Space + f to open a file picker.

Also, if I select a block of text and press Space + Shift + c, then you can block comment that section, and so on.

0:00
/0:21

Comment code in Helix

Helix shows the actions

For supplementary modes like picker mode, Helix shows what to press next in a neat pop up.

When you press space, you can see that a pop-up comes up that says all keys and their uses, so that you can read and follow.

Another one I suggest you try is press the g key and read all the subkeys and their functions.

Press the g key to get some interesting actions in Helix
Pressing the g key

Access the tutor

Helix has an interactive tutorial available to get you started, like the Vim tutor.

Open a terminal and run the command:

helix --tutor

This will take you to a text, which you will read and perform actions as described.

A beginner should complete this tutorial since it gives you a lot of day-to-day shortcut practice inside a sample text.

Essential Keybindings

Helix works flawlessly right out of the box. You do not need any configuration files to make any part of the editor work in the beginning.

But, since it depends on keybindings, before going to other areas, let's see some essential shortcuts to get you started.

Shortcuts to move around the text in Normal mode.

Description Shortcuts
Move one character left/bottom/top/right h/j/k/l
Move to the start of the next word w
Move to the start of the next word (punctuations included) W
Move back to the start of the word b
Move back to the start of the word (punctuation included) B
Move to the end of the next word e
Move to the end of the next word (punctuations included) E
Move to the last line of the text ge
Move to the first line of the text gg
Move to the nth line <n>G
Move to the start of the line HOME
Move to the end of the line END
Move page up PgUp
Move page down PgDn

Shortcuts to change the text in Normal Mode

Description Shortcut
Insert before cursor (Enter insert mode) i
Insert after cursor a
Insert at the beginning of the line I
Insert at the end of a line (append) A
Open a new line below cursor and enter insert mode o
Open a new line above cursor and enter insert mode O
Replace character under cursor r<character>
Delete/cut character under cursor (or selection) d
Yank (copy) selection y
Paste selection p
Paste before cursor P
Yank (copy) to a named register a "<a>y
Paste from a named register a "<a>p
Undo a change u
Redo a change U
πŸ’‘
Always use registers to yank texts. This way, it is easy to confirm where a copied text is and easier to paste later.
🚧
The deletion shortcut d actually cuts the selected word and stored. So, if you have some texts yanked, and then deleted some other text, the deleted text will be the one pasted when you press p. So, use registers for copying important text.

Other routine shortcuts

Description Shortcut Mode
Search for a pattern in the text /<search term> Normal
Select next search match n Selection
Select previous search match Shift + n Selection
Run the command in a shell :!<command> Normal
Run the command and add its output to a line :r !<command> Normal

You can refer to the official keymap documentation for a lot more keyboard shortcuts across modes for specific use cases.

Create a config file

Helix doesn't need a user-written config file to work since it comes with many usable defaults. Still, changing away from defaults needs a config file.

Helix uses the TOML configuration file, located at ~/.config/helix/config.toml.

First, create the directory if it does not exist.

mkdir -p ~/.config/helix/

Now, create a file inside this directory like:

touch ~/.config/helix/config.toml

A different theme

Helix comes with a lot of themes preinstalled, and you don't want to create a long config for it.

Open Helix in a terminal:

helix

Inside Helix, in Normal mode, enter :theme, press a space, and press the TAB key.

You can see that themes begin to show preview. Press TAB to scroll through the live preview of themes. When you spot a theme of your choice, note the name of the theme and press Enter.

πŸ“‹
If you have downloaded the Helix binary, then set of themes are in the runtime folder. Make sure you placed it properly as the documentation say.

Upon pressing the enter key, the theme will be applied to the current session.

To make it permanent, you need to add one line to the Helix config file.

Edit the config file with your favorite text editor.

helix ~/.config/helix/config.toml

And add the line

theme = "theme-name"

For example,

theme = "tokyonight"

Language support

Helix comes with Language Server Protocol Support preset, so there is no need to worry about configuring the LSP.

Still, you need to setup the language server though.

I am using Arch Linux in this example, and in Arch Linux, most of the language server you need are available in the official repository.

To set up CSS support, install the vscode-css-language-server

sudo pacman -S vscode-css-languageserver

Helix will spot this , and you can start working on CSS files from your next start.

0:00
/0:52

CSS Language Completion in Helix

To set up Rust support, install the rust-analyzer package:

sudo pacman -S rust-analyzer

Refer to the Language support page in the official documentation to know what package needs to be setup to get the language support working.

Multiple Cursors

Helix supports multiple cursors out of the box. You can duplicate your cursor downward by pressing Shift + c in Normal mode.

0:00
/0:22

Multiple Cursors in Helix

This lets you edit several lines at once. If you end up with multiple cursors by accident, press , to collapse back to a single cursor.

Wrapping Up

Helix is a decent modal editor, that offers most of the modern features you would expect in the convenience of an easier learning curve.

I won't suggest replacing Neovim or Vim with Helix if you have mastered those editors. But, if you are into modal editing, or terminal-based text editing in general, Helix is the best place to start.

Will you use Helix for all your coding purposes? Or you have another editor that meets all your needs? Do mention in the comments.

If this helped you, consider supporting It's FOSS

It's FOSS has been helping people use Linux for the past 14 years. Help us stay independent from big tech. Become a Plus member, enjoy ad-free reading and get 5 eBooks.

Plus yearly

Ad-free, FREE ebooks

Join yearly

Buy us a coffee

Any amount, no commitment

Support on Ko-fi
About the author
Sreenath

Sreenath

Linux tinkerer by day, Lord of the Rings fanatic by night. When I'm not busy conquering the command line, you can find me kicking back and watching some football while quoting JRR Tolkien

Become a Better Linux User

With the FOSS Weekly Newsletter, you learn useful Linux tips, discover applications, explore new distros and stay updated with the latest from Linux world

itsfoss happy penguin

Great! You’ve successfully signed up.

Welcome back! You've successfully signed in.

You've successfully subscribed to It's FOSS.

Success! Check your email for magic link to sign-in.

Success! Your billing info has been updated.

Your billing was not updated.