#HelixEditor I have uninstalled my #Vim and #NeoVim dotfiles. I’m way happier seeing all the errors and other things Helix gives me.
#HelixEditor I have uninstalled my #Vim and #NeoVim dotfiles. I’m way happier seeing all the errors and other things Helix gives me.
I have roughly 30 plugins in #Vim #NeoVim. #HelixEditor covers the functionality of almost all of them. It doesn’t have the power of vim-abolish; and it’s maybe got a little ways to go on working with #Git. Abolish seems too complicated and special case to fit into the core of Helix. I don’t use it often, but when that’s the tool you need, Abolish is the only thing that will do the job.
So it does look like the TypeScript language server has a limit of 4MB source size where it disables type checking (and actually shows an erroneous error stating that exports that exist in the file do not exist) for files that are imported but not open in the current workspace/session.
Still not sure if this is documented anywhere or not (haven’t been able to find it, if it is).
99.99999% of the time, unless you’re doing niche stuff like I am, you won’t run into this.
Workaround: should you have such a large file, e.g., with a large generated object, try and refactor to split it up into multiple files and rejoin it a separate file. The actual object size/memory usage isn’t the issue, it’s the file size.
Been using #HelixEditor full-time several days in a row now. Editing is getting easier. I’m remembering how to do things better and faster. I have three language servers installed now: #Python, #RustLang, and #Markdown. I love seeing errors and warnings right in the editor. I love being able to run the formatter at will. I love being able to use tree-sitter nodes as textobjects. I still have some things that catch me every time. Like when your cursor is sitting on the end-of-line position in normal mode: the difference between 'a' and 'A'. And I’m still not used to going into insert mode while there is a selection growing the selection as you type.
I’m very far from a Helix expert, and I disagree about some things; but I really feel good about this editor.
Right, well, I can reproduce it with a simple example so I just filed a bug. Let’s see if it’s a known issue/limitation or what.
https://github.com/typescript-language-server/typescript-language-server/issues/951
Screen recording showing the issue:
@ainmosni @bernh In case you're thinking about giving Helix a try, make sure to start off with the tutorial (run it from the command line with the --tutor argument).
As for getting on top of the key bindings in Helix, I created a crib sheet to help me remember/find the most vital and most interesting controls:
https://www.bobulous.org.uk/coding/Helix-crib-sheet.html
(Definitely best viewed on a big screen.)
@galdor I see your point, and idiom in #RustLang agrees with you. Import such that at the call-site you say `module.identifier()`.
On the one side (the side that disagrees with you), my IDE typically tells me where naked `identifier` is defined (either #PyCharm or #HelixEditor in my case); and it’s the most common case in #Python code I have read (and I’ve been programming in Python for decades).
On the other side you’re not always hovering as you read over big blocks of code. Naming the origin module is informative.
In the middle, it’s not needed for a lot of things, especially stdlib and common packages. It seems like a fine line and I’m not quite certain what the best behavior is.
This week hell froze over:
After being part of the 'Ctrl+b,Ctrl+n,Ctrl+p,Ctrl+f' club for about 18 years I joined the 'hjkl' club by switching over to Helix as my daily driver editor.
I’m liking #HelixEditor more and more each day. I think it has a ways to go; and I’m not nearly as fast in Helix as I am in Vim (mostly because I keep stopping to look stuff up) but I see no reason, with _my_ workflow, not to use Helix as my daily driver. (This after more than 20 years as a #Vim and then #NeoVim user). The LSP and tree-sitter stuff are absolutely compelling.
If you are constantly SSHing into machines you don’t control; and that’s your whole job — you probably have a different answer.
OMG, #HelixEditor def has some amazing new updates..
Global search is just perfect now.. thank you! So glad I support this project
@art I’m a long time #Vim and #NeoVim user. In fact, I’ve given talks on them. I use Vim key-bindings everywhere I can; especially #IdeaVim in #PyCharm. I’ve been using #HelixEditor lately. The key-bindings come from Vim, but aren’t about playing code golf. They’re about being easy to use and remember. When you start a multi-key sequence, there is typically a menu that pops up showing you what the next key can be. The big difference, though, is that in Helix first you make a selection, and then you act on it.
Helix is easier to use than Vim/NeoVim. I’m just a Helix beginner especially compared to my skills in Vim. Helix is absolutely worth a try. If it’s Vim for you, then it’s Vim. But Helix might offer you something familiar but simpler.
#Vim #NeoVim has #Surround plugin. #HelixEditor has it built in. The Helix version doesn’t do "surround with function". I started a discussion on the Helix Discussion board, but privately forked and cloned and started experimenting. Just when I finally got a response in the discussion, I finally had close to a working prototype.
https://github.com/helix-editor/helix/discussions/13179
The response showed the keystrokes to do it in Helix as it is now, and they were reasonable. Using Nik Revenco’s way was a better match for Helix’ "vision" as expressed in their Vision.md doc.
I learned a lot from prototyping a command (in #RustLang #Rust) within Helix (in particular, how to make a prompt in the editor and get a string from the user was a big thing for me), but I ended up throwing it away. I was wrong.
I’m really starting to like Helix, but like Rust, I have so much to learn. Still experimenting, still learning for both.
I checked out #HelixEditor on a whim last night by working through `:tutor` and I think I like it! It truly does "play" like a fully-loaded Neovim w/ IDE-like integrations out of the box.
I never really got deep into learning Vim operations, just the basics, so it's difficult for me to compare what's new and different about Helix vs Vim outside of the obvious. At any rate I can see how powerful it can be, once I manage to fit all the key commands in my head that is.
I think I'll keep using it for a bit as my daily-driver to see how it fits.
Because of the editors I use ( #NeoVim and playing with #HelixEditor ), I use and like a specific change to my keyboard. The CapsLock key is instead Escape when you tap it, or Control when you hold it with any other key.
It’s easy to make my #KinesisAdvantage360 do this. So it’s frustrating when I have to use the built-in keyboard on my Windows laptop. But I found this:
Hmm, helix editor + ruff + rust-analyzer is pretty nice...
I see #HelixEditor is getting a built-in language (eventually, I don’t know when, and I don’t have links to information about it). The language will be a #Scheme called Steel. Steel is inspired by #RacketLang and written in Rust. I’ve written small programs in Racket and don’t much like it. I find them hard to understand when I come back to them later. Probably that’s just lack of experience. Adding a built-in language is a really good thing. Picking a Scheme is almost certainly a great choice, despite my feelings. If I do settle on Helix and if I do end up scripting it, maybe I’ll end up liking Scheme more. As far as I’m concerned, this addition to Helix can’t come soon enough.
@snonux Oh, nice. I hadn't appreciated the diagnostic picker or goto word action before.
I've added these to my Helix crib sheet:
https://www.bobulous.org.uk/coding/Helix-crib-sheet.html
That way I'm more likely to find them and remember them in future.
This is a great introductory blog post about the Helix modal editor. It's also been my first choice for over a year now. I am really looking forward to the Steel plugin system, though. I don't think I need a lot of plugins, but one or two would certainly be on my wish list.
And I did the same with `ctrl + V` to mimic #helixEditor `C` in #neoVIM
xnoremap <expr> V mode() == 'V' ? "\<down>" : "V"
xnoremap <expr> <C-V> mode() == "\<C-V>" ? "\<down>" : "<C-V>"
Hello masto,
When trying out #helixEditor I really liked that smapping `x` increase the selection one line down. I would like to do the same in #NeoVIM
How can I map a key **only** in "linewise visual mode", but not in "block visual mode"?
:linewiseonlymap X j
ie. `VVVV` would linewise select 4 lines, but `V<C-V>VV` would first do a linewise selection, then go to block selection, then go back to linewise selection, and finally the last V will select a second line.