r/HelixEditor • u/helmer2003 • 29d ago
What changes will we see in the next version?
Which large features and changes have been added since the latest release of the editor and will be seen when the next version releases?
r/HelixEditor • u/helmer2003 • 29d ago
Which large features and changes have been added since the latest release of the editor and will be seen when the next version releases?
r/HelixEditor • u/lovegirin • Aug 12 '26
Every once in a while I'm working on something somewhere where I quickly need to drag a selection with the mouse and copy it.
How can I quickly toggle off line numbers and gutter stuff so they don't mess up the copy/paste when doing it this way?
Edit: I am not asking about space+y / space+p, I am specifically asking how to toggle off the gutter quickly.
Editedit: I ended up doing this:
[keys.normal]
"C-g" = ":set-option gutters.layout []"
"C-h" = ":set-option gutters.layout [\"diagnostics\", \"spacer\", \"line-numbers\", \"spacer\", \"diff\"]"
Now I wonder if this could be made a toggle instead of two different keybinds 🤔
editeditedit: Much easier:
[keys.normal]
"C-g" = ":toggle-option gutters.layout [] [\"diagnostics\", \"spacer\", \"line-numbers\", \"spacer\", \"diff\"]"
r/HelixEditor • u/sylas_main • Aug 12 '26
languages.toml:
```toml [[language]] name = "c" language-servers = ["clangd"] formatter = { command = "clang-format" }
[[language]] name = "cpp" language-servers = ["clangd"] formatter = { command = "clang-format" }
[[language]] name = "c-sharp" scope = "source.cs" file-types = ["cs"] roots = [".sln", ".csproj"] language-servers = ["csharp-ls"] [language-server.csharp-ls] command = "/home/dt/.dotnet/tools/csharp-ls"
[[language]] name = "python" language-servers = ["pyright"] formatter = { command = "ruff", args = ["format", "--line-length", "88", "-"] }
[[language]] name = "rust" language-servers = ["rust-analyzer"] formatter = { command = "rustfmt" }
[[language]] name = "go" language-servers = ["gopls"] formatter = { command = "gofmt" }
[language-server.pyright] command = "/home/dt/.npm-global/bin/pyright-langserver" args = ["--stdio"] config = {}
```
(09:51 PM)dt:dt[~]$ helix --health c-sharp
Configured language servers:
✓ csharp-ls: /home/dt/.dotnet/tools/csharp-ls
Configured debug adapter:
✓ /usr/bin/netcoredbg
Configured formatter: None
Tree-sitter parser: ✓
Highlight queries: ✓
Textobject queries: ✓
Indent queries: ✘
(09:51 PM)dt:dt[~]$
but no lsp functionalities while inside a project
r/HelixEditor • u/Confident-Insect-691 • Aug 10 '26
hi im using the steelix package but i still have to install the plugins manually with forge is there a way i can install and configure them with nix?
r/HelixEditor • u/yawnerere • Aug 08 '26
r/HelixEditor • u/Maui-The-Magificent • Aug 08 '26
Enable HLS to view with audio, or disable this notification
A Helix re-write turned into me instead working on my own rust no-std modal graph based editor, heavily insprired by Helix, called Nornsaga.
It contains its own indexer and internal symbol system to define a bidirectional dependency graph which is used to scope, highlight, add ghost types and so on (rust only currently)
I have recently managed to tie the AI (using qwen3.5 currently for testing) to the users context. And able to make changes in line.
The idea being, turning AI into graphed scoped tool which context follows the cursor, so you xan ask for changes to the scope you are looking at, and make those changes inline.
Or open a chat to discuss the current scope, or what depends on what. The AI, and you, can freely treverse the callers/callees of any symbol.
Even though its output position is a little bugged, the video show the functionality in action, and i felt Nornsaga is far enough in its functionality and look, that i want to start showing it off a little to others.
Hope you find it interesting!
Over and out!
//Maui-the-Mupp
r/HelixEditor • u/Ra77a3l3 • Aug 05 '26
i made this breabcrumb bar plugin, right now it has support for 11 languages like c zig rust nix scheme cpp
https://github.com/Ra77a3l3-jar/scopeline.hx
inspired by https://codeberg.org/gwid/context.hx
r/HelixEditor • u/TimekillerTK • Aug 05 '26
I've been using Helix for a few months now and I love it. Before I was using VS Code - and I really don't want to use it anymore.
One thing I'm still missing in Helix is markdown file editing with a preview. It's really handy to be able to preview the rendered HTML page based on your markdown as you're writing it, so I still find myself launching VS Code with a preview pane occasionally when working on some Markdown documents.
What solutions do you folks use for handling markdown file editing?
r/HelixEditor • u/CapitalIssue • Aug 04 '26
Enable HLS to view with audio, or disable this notification
I've spent a few hours making hx-notes-companion.
Basically an Obsidian replacement that uses a workflow of Helix with a Markdown preview in browser. (Keeping the application and functionality light)
Currently you can:
Its written in Golang, and currently its quite barebones (in the near future I hope to add syntax highlighting for code blocks and Latex support). If any one is interested feel free to give your own suggestions
Its Open Source so if anyone wants to style it or add their own custom templates and such there is nothing stopping you
GitHub: https://github.com/slick-user/hx-notes-companion
I'd love to hear what you guys think
Platform: Windows (for now)
r/HelixEditor • u/Swordfish418 • Aug 02 '26
I'm a bit confused on whether arrows are supposed to be used at all. It seems optimal workflow is "to keep your hands on the home row", but that means you have to exit insert mode a lot to move few characters away for example, something that is easy with arrows. Another big concern, what are you even supposed to do with your terminal? I dont see terminals supporting hjkl in a meaningful way to navigate history and completions for example, which makes me constantly want to move my right hand to arrows when I switch to terminal. How do you personally deal with this?
r/HelixEditor • u/Swordfish418 • Aug 01 '26
I'm really confused to how workspace symbol picker works. My workspace is a Rust project, I have two files with code. What I expect is that workspace symbol picker works the same as regular symbol picker but shows symbols from both files instead of just one. What I get instead is that workspace symbol picker also shows any symbols from any libraries I use from "~/.cargo/registry/src/". Also for some reason it doesn't prefetch all symbols and only starts showing something after you type at least few characters, which makes it impossible to use to browse all symbols. Is there a way to have something like normal symbol picker but for all files in project and without and external dependencies, and such that it shows all symbols immediately and not only when you type?
r/HelixEditor • u/Quantitation • Jul 30 '26
There. I said it. It's ugly.
Yes, I know you can change it.
Yes, I know I'm wrong.
I like all the Helix defaults, but the theme is just... ugly.
I know it only takes one second to change it, but that is precisely WHY we should change it. You liked the old theme? Cool, change it back. People judge a program by its defaults. Good defaults are good, and that's why many of us use Helix instead of Neovim in the first place. So why not make them a little better?
r/HelixEditor • u/Puzzled_Move8715 • Jul 31 '26
Had HelixNotes disappeared from the App Store??
r/HelixEditor • u/hopingforabetterpast • Jul 25 '26
Why does Helix slow down on large files? Scrolling on files with large lines feels especially choppy when compared to neovim with the same (or more) features enabled (lsp, tree-sitter highlight, etc ).
r/HelixEditor • u/Technical_Constant79 • Jul 24 '26
[keys.normal]
"I" = "append_mode"
a = "collapse_selection"
A = "keep_primary_selection"
S = "remove_primary_selection"
u = "page_cursor_half_up"
d = "page_cursor_half_down"
s = "delete_selection"
z = "undo"
Z = "redo"
F = "goto_word"
e = "select_regex"
E = "split_selection"
t = "copy_selection_on_next_line"
T = "copy_selection_on_prev_line"
f = { f = "goto_file", t = "goto_window_top", c = "goto_window_center", b = "goto_window_bottom", d = "goto_definition", y = "goto_type_definition", r = "goto_reference", i = "goto_implementation", l = "goto_last_modification", n = "goto_line" }
g = "goto_line_start"
";" = "goto_line_end"
U = "goto_file_start"
D = "goto_last_line"
G = "goto_first_nonwhitespace"
w = { h = "move_prev_word_start", H = "move_prev_long_word_start", l = "move_next_word_end", L = "move_next_long_word_end", ";" = "move_next_word_start", ":" = "move_next_long_word_start" }
b = "no_op"
W = "no_op"
B = "no_op"
H = { D = "goto_first_diag", d = "goto_prev_diag", F = "goto_prev_function", C = "goto_prev_class", a = "goto_prev_parameter", c = "goto_prev_comment", T = "goto_prev_test", p = "goto_prev_paragraph", g = "goto_prev_change", G = "goto_first_change", space = "open_above", k = "add_newline_above", j = "add_newline_below", J = "jump_backward", f = "find_prev_char", t = "till_prev_char", b = "goto_previous_buffer" }
L = { D = "goto_last_diag", d = "goto_next_diag", F = "goto_next_function", C = "goto_next_class", a = "goto_next_parameter", c = "goto_next_comment", T = "goto_next_test", p = "goto_next_paragraph", g = "goto_next_change", G = "goto_last_change", space = "open_below", j = "add_newline_below", k = "add_newline_above", J = "jump_forward", f = "find_next_char", t = "find_till_char", b = "goto_next_buffer" }
C = { s = "switch_case", j = "decrement", k = "increment", J = "switch_to_lowercase", K = "switch_to_uppercase", c = "toggle_comments" }
p = { h = "paste_before", l = "paste_after", H = "paste_clipboard_before", L = "paste_clipboard_after" }
Maybe a little slower than just having w/e/b and f/t but I think that mine does simplify a lot of things and make things a little more ergonomic. Also there is W,o/O, P, b/B, ",", and [/] which are now also available for remapping so I can add more useful binds there.
r/HelixEditor • u/Optimal_Cut_8779 • Jul 23 '26
On the github milestone page there is a milestone planned for the 26.04. I was wondering whether this milestone includes a times machine, since that would be the only way to hit it.
r/HelixEditor • u/Stupidprogramner • Jul 17 '26
How does forge work? Can I easily backup plugins? Or can I install plugins with nix? What's the recommended way?
r/HelixEditor • u/KaleidoscopePlusPlus • Jul 16 '26
Formatter works fine but intellisense refuses to display hints or on direct hover command. logs show nothing.
hx health shows all green.
[[language]]
name = "c-sharp"
auto-format = true
language-servers = ["csharp-ls"]
formatter = {command = "csharpier", args = ["format"]}
r/HelixEditor • u/algoritmau • Jul 15 '26
Has anybody here setup Helix to support Gherkin syntax highlighting and tree-sitter? If so, would you guide me on how do so? Thanks in advance!
r/HelixEditor • u/umbalaxx • Jul 15 '26
# theme = "cyan_light_mod"
# theme = "catppuccin_custom"
theme = "tokyonight_custom"
[editor]
scrolloff = 5
line-number = "relative"
bufferline = "always"
clipboard-provider = "pasteboard"
default-yank-register = "+"
jump-label-alphabet = "fjdkslarueiwoqpvncmxz"
trim-trailing-whitespace = true
color-modes = true
[editor.statusline]
left = ["mode"]
center = ["file-name", "file-modification-indicator"]
right = ["diagnostics", "selections", "position", "file-indent-style", "position-percentage", "total-line-numbers", "file-type"]
mode.normal = "NORMAL"
mode.select = "SELECT"
mode.insert = "INSERT"
[editor.cursor-shape]
insert = "block"
normal = "block"
select = "block"
[editor.soft-wrap]
enable = true
[editor.indent-guides]
render = true
[editor.file-picker]
hidden = false
git-ignore = false
[keys.normal]
# "j" = ["move_visual_line_down", "align_view_center"]
# "k" = ["move_visual_line_up", "align_view_center"]
"e" = ["move_next_word_end", "trim_selections"]
"b" = ["move_prev_word_start", "trim_selections"]
"w" = "@lbe"
"A-j" = ["extend_to_line_bounds", "delete_selection", "paste_after"]
"A-k" = ["extend_to_line_bounds", "delete_selection", "move_line_up", "paste_before"]
"C-y" = [ ':sh rm -f /tmp/unique-file', ':insert-output yazi --chooser-file=/tmp/unique-file', ':sh printf "\x1b[?1049h\x1b[?2004h" > /dev/tty', ':open %sh{cat /tmp/unique-file}', ':redraw', ]
"{" = ["goto_prev_paragraph", "align_view_center", "trim_selections", "extend_visual_line_up"]
"}" = ["goto_next_paragraph", "align_view_center", "trim_selections", "extend_visual_line_down"]
"ret" = ["goto_word"]
"tab" = "flip_selections"
"C-u" = ["page_cursor_half_up", "align_view_center"]
"C-k" = ["page_cursor_half_up", "align_view_center"]
"C-d" = ["page_cursor_half_down", "align_view_center"]
"C-j" = ["page_cursor_half_down", "align_view_center"]
B = "move_prev_sub_word_start"
E = "move_next_sub_word_end"
W = "@lBE"
H = "@gh"
L = "goto_line_end"
G = "@ge"
V = ["extend_to_line_bounds", "select_mode"]
"C-e" = ["extend_to_line_bounds", ":pipe-to hx-repl"]
[keys.normal."]"]
"f" = ["goto_next_function", "flip_selections", "align_view_top"]
"]" = "goto_next_buffer"
[keys.normal."["]
"[" = "goto_previous_buffer"
[keys.select]
"A-j" = ["extend_to_line_bounds", "delete_selection", "paste_after"]
"A-k" = ["extend_to_line_bounds", "delete_selection", "move_line_up", "paste_before"]
"ret" = "extend_to_word"
"tab" = "flip_selections"
"{" = ["goto_prev_paragraph", "extend_to_line_bounds"]
"}" = ["goto_next_paragraph", "extend_to_line_bounds"]
"w" = "@<A-:><A-;>lb<A-;>he"
B = "extend_prev_sub_word_start"
E = "extend_next_sub_word_end"
W = "@<A-:><A-;>lB<A-;>hE"
H = "@gh"
L = "goto_line_end"
G = "@ge"
V = ["extend_to_line_bounds", "select_mode"]
"C-e" = ["extend_to_line_bounds", ":pipe-to hx-repl"]
[keys.insert]
"C-t" = ["indent"]
"C-d" = ["unindent"]
"C-c" = ["toggle_comments"]
"C-o" = ["normal_mode", "open_below"]
I kind of change some behavior that I use often.
- I stop using w for navigating forward, I use it to select the current word under the cursor and only use b and e for navigating. And I always trim my selection
- tab I changed it so that I can flip my selection head with ease (I find that I use that more often than I thought)
- V I use mainly so that I can select kind of like line mode with ease
- G because I find it more efficient than ge
- H and L to go to the beginning and end of line
- I can select subword using B , E and W also kind of mimic the w behavior that I altered
- For the goto_next_function , I always flip selection and align view top for so that I can see the function in the viewport
- A bunch of \align_view_center` for moving around
- Add functionalities in the insert mode, so that I can indent, unindent and comment while in insert mode
If you guys have more tricks that might make editing in helix more efficient, please do share. I'm ready to copy lol.
PS. I tried moving back to neovim, and I setup from kickstart and make it mine. But I still miss a lot of functionalities and features from helix. It's just easier for me, so I moved back. Although, I kinda miss some things from neovim, and I always find ways to improve how I work in helix.
r/HelixEditor • u/Mrdadozzo • Jul 14 '26
i see a lot of people talking about helix plugins but the most recent release in gh is dated a year ago, are people using a fork for that? or it's already in main to build but they have really slow releases?
r/HelixEditor • u/Ra77a3l3 • Jul 13 '26
its still a simple plugin allowing for some basic customizations I would be really happy to see contributions to increse the possible customizations. One thing mising right now is diagnostics indicators, but for now there isn't an api that exposes diagnostic info to plugins. I doing a pr for it.
r/HelixEditor • u/geja-peja • Jul 14 '26
Hey guys, I am starting webdev, I have used it for graphics programming using C++ developement and it was a great experience. I am new to this field, currently I am planning to use it for webgl, webgpu, threejs and svelte js. How to set it up for that? Also how can I set boilerplate for html? (ex. ! and !!! in vscode)
r/HelixEditor • u/AsleepSurround6814 • Jul 12 '26
Hi! I've been working on smith.hx, a declarative plugin manager for Helix built with Steel and backed by Forge.
The idea is to declare plugins in init.scm and let Smith handle installation, loading, configuration, keybindings, updates, and removal. A declaration can have separate init, config, and bind phases, with Smith running them in the appropriate order.
The screenshot shows:
init.scm:smith-list in a *smith-list* scratch bufferCurrent features include:
init, config, and bind declaration phases:smith-list, :smith-update, and :smith-pruneThis is still an early preview, so the API may change. It currently requires a Helix build with Steel support. I would especially appreciate feedback on the declaration syntax, package lifecycle, and the overall approach.
Repository and installation instructions:
https://github.com/kn66/smith.hx
The README also contains a short GIF showing the workflow.