Developer Tooling

Helix + Byobu on macOS

A practical reference for getting comfortable in Helix editor running inside Byobu — covering keybindings, multiple cursors, LSP, Byobu pane management, clipboard, and all the macOS-specific gotchas.

Author Anshil Gandhi Updated June 2026 Reading time ~8 min

macOS Setup

Install

Install everything via Homebrew: brew install helix byobu tmux. Run byobu-tmux if plain byobu doesn't launch. Config lives at ~/.config/helix/config.toml.

F-keys getting intercepted by macOS

By default macOS maps F-keys to brightness, volume, and Mission Control — which breaks Byobu's entire interface. Fix it one of two ways:

Option key as Alt

Helix uses Alt combos heavily (e.g. Alt-C for multiple cursors). The Option key needs to emit escape sequences, not Unicode characters:


Byobu Essentials

Byobu wraps tmux. Its primary interface uses F-keys, which almost never conflict with Helix.

Sessions & Windows

KeyAction
F2New window
F3 / F4Previous / next window
F6Detach session
F8Rename window
F9Byobu config menu

Panes

KeyAction
Ctrl-F2New vertical pane split
Shift-F2New horizontal pane split
Shift-F3 / Shift-F4Previous / next pane
Shift-↑↓←→Move between panes
Alt-↑↓←→Resize pane

Scrollback

Use F7 to enter tmux scroll mode — navigate with arrow keys or PgUp/PgDn, exit with q or Enter. Only use this for scrolling terminal output outside Helix. Inside Helix, use Ctrl-d / Ctrl-u instead.

Workflow tip

Keep Helix in one pane and a shell in the adjacent pane. Use Shift-←→ to hop between them without ever leaving Helix's normal mode. Run your compiler, git, or test suite in the shell pane and stay in flow.


Helix Core Concepts

Helix is selection-first, unlike Vim's operator-first model. You select something, then act on it.

Vim:    d w    →  operator (delete) then motion (word)
Helix:  w d    →  select word, then delete selection
ModeEnter withPurpose
NormalEscNavigation and editing commands
Inserti / a / oType text
SelectvExtend the current selection

KeyAction
h j k lMove left / down / up / right
w / bNext / prev word start
eNext word end
W / B / ESame but WORD (whitespace-delimited)
f<char>Find char forward on line
F<char>Find char backward on line
t<char> / T<char>Till char (stops before it)
ggGo to top of file
geGo to end of file
g<line>Go to line number
Ctrl-d / Ctrl-uScroll down / up half page
Ctrl-f / Ctrl-bFull page down / up
%Jump to matching bracket
mi / maSelect inside / around object (word, bracket, etc.)

Selection & Multiple Cursors

Multiple cursors are a first-class feature in Helix — no plugin needed.

KeyAction
vEnter Select mode (extend selection)
xSelect current line
XExtend selection to whole lines
CDuplicate cursor downward
Alt-CDuplicate cursor upward
sSelect regex within selection
SSplit selection on regex
,Keep primary cursor only (collapse)
Alt-,Remove primary cursor
&Align selections
_Trim whitespace from selections
Multiple cursors power move

Search with /pattern → all matches highlighted. Press Ctrl-d to select matches one at a time additively. Press Alt-d to skip and deselect. Then act on all of them at once.


Editing

KeyAction
iInsert before selection
aInsert after selection
oOpen line below
OOpen line above
dDelete selection
cChange (delete + enter insert)
r<char>Replace each selected char
~Switch case
`Lowercase selection
Alt-`Uppercase selection
u / UUndo / Redo
yYank (copy)
p / PPaste after / before
> / <Indent / de-indent
JJoin lines

Surround operations

KeyAction
ms<char>Add surround around selection
ds<char>Delete surround
cs<old><new>Change surround character

KeyAction
/Search forward
?Search backward
n / NNext / prev match
*Search for word under cursor (forward)
#Search for word under cursor (backward)
Ctrl-sSave current position to jumplist
Ctrl-i / Ctrl-oJump forward / back in jumplist

File & Buffer Management

KeyAction
:wSave
:q / :q!Quit / force quit
:wqSave and quit
:o <file>Open file
Space-fFuzzy file picker
Space-bBuffer picker
Space-/Global grep search
Space-y / Space-pYank / paste using system clipboard
gfGo to file path under cursor
Space-eToggle file explorer
Clipboard on macOS

pbcopy / pbpaste work automatically — no config needed. If clipboard breaks inside Byobu/tmux, add set -g default-command "reattach-to-user-namespace -l zsh" to ~/.tmux.conf and install with brew install reattach-to-user-namespace.


Window Splits (inside Helix)

Helix has its own split system independent of Byobu panes. Use Helix splits to view two files side by side; use Byobu panes to run a shell alongside your editor.

KeyAction
Ctrl-w sHorizontal split
Ctrl-w vVertical split
Ctrl-w h/j/k/lMove between splits
Ctrl-w qClose split
Ctrl-w oClose all other splits
Ctrl-w fOpen file picker in new split

LSP & Code Intelligence

LSP is built in — no plugins. Install the language server for your language (e.g. brew install rust-analyzer, npm i -g typescript-language-server) and Helix picks it up automatically.

KeyAction
Space-dDiagnostics picker
Space-aCode actions
Space-rRename symbol
KHover / show docs
gdGo to definition
grGo to references
giGo to implementation
gyGo to type definition
]d / [dNext / prev diagnostic
Ctrl-spaceTrigger completion

Productivity Tips

Repeat f/t motions

After pressing f<char> or t<char>, press ; to repeat the motion forward or , to repeat backward. Much faster than retyping.

Text object selections

Press m then i (inside) or a (around) followed by a delimiter. Examples: mi( selects inside parentheses, maw selects around a word including surrounding whitespace, mi" selects inside quotes.

Jump to any visible line

Use relative line numbers (see config below) combined with g<number> to jump anywhere on screen instantly — no counting from the top.

Shell in an adjacent Byobu pane

Press Ctrl-F2 to create a vertical pane. Run your build/test/git there. Shift-← to return to Helix. This flow keeps you from losing Helix context just to run a command.


Recommended Config (~/.config/helix/config.toml)

[editor]
line-number = "relative"      # jump anywhere with g<number>
scrolloff = 8                 # keep cursor away from screen edges
cursorline = true             # highlight current line
color-modes = true            # mode indicator changes color
mouse = true                  # click to move cursor

[editor.statusline]
left  = ["mode", "spinner", "file-name", "file-modification-indicator"]
right = ["diagnostics", "position", "file-encoding", "file-type"]

[editor.cursor-shape]
insert = "bar"
normal = "block"
select = "underline"

[keys.normal]
";" = "repeat_last_motion"    # repeat last f/t/F/T

Helix vs Vim: Mental Model

The hardest adjustment coming from Vim is remembering the order is reversed: select then act.

TaskVimHelix
Delete worddwwd
Change inner wordciwmiwc
Delete lineddxd
Visual line selectVx (repeatable)
Multiple cursorsPlugin (vim-visual-multi)Built-in
Fuzzy file finderPlugin (telescope)Built-in Space-f
LSPPlugin (nvim-lspconfig)Built-in
SurroundPlugin (vim-surround)Built-in ms / ds / cs

Written by Anshil Gandhi · June 2026

Helix editor · Byobu · macOS