I’ve tried vim on and off during college but never really had the time to fully get working with it. As it turns out the stress of two degrees is not conducive to “fun activities”. Now that I have a real job ™️, I’ve decided to finally try and use it this week full stop and I genuinely feel like a programming chad. There’s still a lot I’ll need to learn and probably overtime I’ll discover some inefficiency in how I’m using it now but it really does just feel good. I understand the hype now.
So I keep trying vim and now neovim, I kind of like it as a good allrounder for one off syntax highlighted editing. It’s just that for me, quick and simple editor.
For a true IDE I need proper symbol navigation. What I have in my JetBrains setup: ctrl+click - go to definition, ctrl+shift+click - search for references, alt+ctrl+click - go to implementation, alt+ctrl+shift+click go to declaration (specific to going to an interface). Then there’s symbol renaming and good multi carret / selection support with keyboard and mouse bindings (alt+up/down arrows, alt+single/double/tripple click). Also, multicarret copy pasting is a major feature.
Let’s not forget about live static analysis and autocomplete with support for fuzzy search and documentation.
I don’t even know where to start to make vim or neovim do all that. If it can’t do that seamlessly and just as well, vimlike editors will never be a replacement for a proper IDE. It’s fast, capable single file and small scope editor for me.
I do also like all the alt and ctrl combinations with arrow keys to move lines, blocks and jump over words.
Give Helix a try. It comes with everything you are asking for built in, plus discovery for the commands, plus a selection first approach so you can see what you’re doing.
I do also like all the alt and ctrl combinations with arrow keys to move lines, blocks and jump over words.
That’s what I love the most about VIM, that it has dozen little tricks like these. Need to jump over a word? Jump to next occurance of letter L? Jump five words? Jump to second parameter of a function definition? Jump to matching bracket? There’s a motion for all of that, and more. Including “go to definition” or “go to references”, if you set up your vim correctly.
I don’t even know where to start to make vim or neovim do all that.
What I did was simply install IdeaVIM into my Rider, so I can start learning the motions while also keep the features of the IDE I’m used to, but also more importantly installed LazyVim, which is a pre-made config for nvim that can do most of that by default, or has a simple addon menu (LazyExtras) that automatically download and install plugins relevant for a language you are working on. I.e I need to work in Zig, I just open LazyExtras menu, find zig-lang, and it install LSP, debugger, linter, etc that’s specific for that language.
gdto j(g)ump to definition. Just to say that those features exist in nvim.I completely agree. Also almost all of the fancy editing you can do with Vim can be done just with multiple cursors, and it’s less annoying because you do it incrementally (rather than typing a long sequence of commands and then seeing the result), and you much less to memorise.
oh, you do have fuzzy search with neovims kick-start. I have go to def on g>r>d. The rest I use way less so I don’t remember offhand, the normal one button search just works for me so far.
Yes, I will not say it doesn’t take extra effort but at least for me it has payed off.
Modal editors in general are awesome. Currently using Helix as my goto editor
I was just going to say this. The modal part is the important part. Helix seems great, but I was unable to find a killer feature to draw me away.
Also, OP, realize you will always be nerd sniped. :-)
I use Emacs BTW, and sometimes helix (after 20 years of vim).
For me, the killer feature is the consistent selection->action grammar followed by the discoverability features. Being able to see what I am doing before I do it works much better for me and having those little pop ups for the space and g menus mean that I learned the bindings so much faster and use more of them that I ever did for either emacs or vim.
The thing about Vim is once you get the navigation down you’ll want it for everything and you’ll refuse to go back to anything else.
I used Vim for so long that I can’t live without some form of vim style navigation. my Window Manager uses it, my web browser uses it, all my TUIs use it, hell I even switched to Emacs and installed Doom Emacs and THAT uses it. Now I only ever use a mouse for gaming because you realize that navigating around your PC purely with your keyboard is actually faster than using a mouse. I’ve disabled the touchpad completely on both my laptops.
If you’re digging Vim check out NeoVim with LazyVim. makes plugins and theming and what have you easier. I use it as my backup to DOOM Emacs.
I second this. I only started slowly switching to nvim few months ago, and I already can feel slightly annoyed when I have to take off my hands of the keyboard to reach for a mouse, or when I’m editting a text in i.e a browser, want to make an edit few words back, and I have to spam keys like a madman instead of just jumping where I need to be.
It’s addicting and extremely comfortable, having a good keyboard navigation controls.
I really need to look into tiled window managers and a browser.
how do you actually navigate a browser tho? i always feel like i need the mouse for that…
I use Qutebrowser. All links and interactions are keybound. so if for example I want to “click” on your user name I hit “F” which pops up a link hint and then hit whatever two letters are over the link. so for your profile it would be f + ll. that’s it. everything that it’s on a webpage that you would normally use a mouse to interact with can all be done with keybinds. It’s great, it’s quick.
Browser navigation is also keybound. if I want to go back I hit shift+h. forward is shift+l. to switch tabs it’s shift+j or k. closing a tab is just pressing d.
there’s also extenstions for chrome and firefox that will do the same thing like vimium and tridactyl.
If you’ve used Vim for an extended period of time then navigating the same way in a browser is actually awesome. takes a bit to get used to but once you do you won’t go back and trying to use a browser with a mouse just feels slow.
On a related note, try Vimium (FF / chrome extension) that brings vim motions into your browser. You will have a more complete experience.
Wait that’s awesome. Any chance that there’s a safari extension? I use safari and FF at home since I use both Linux and macOS
Not a safari user so don’t really know but on a quick google search did find this : https://github.com/televator-apps/vimari
I know! The other day I just figured out what
:qdoes, never felt so powerful.:qthis
😭
There are always more cool tricks and great plugins out there, have fun!
Also I’d recommend Neovim, it’s exactly like vim except it supports Lua scripting, so there are lots of powerful plugins that aren’t available on vanilla vim.
It’s not exactly like vim, and there are plenty of vim plugins that don’t work with it (anything vim8 onward). There has never been a 1-to-1 correspondence, the gulf widens as both develop different features with different philosophies.
The most egregious offense on Neovim’s part that I can’t get past is the removal of access to the shell in which you run vim (via
:!,:w !, etc.). Vim is so much more capable of being closely intertwined with the shell, whereas neovim requires everything to be done through terminal buffers (speaking of which, vim’s terminal buffers are a lot better than Neovim’s).Also, Lua is really overrated and worse for vim scripting than vim9script (which is both more native to vim and faster).
Ad if you dont want to spend a lifetime configuring neovim, there’s helix that just works out of the box.
Can helix be fully controlled by keyboard? Does it have a 1-to-1 vim mode? Kind a interested in trying other editors, but I find vim controls are vastly more comfortable to anything that I tried so far
- Yes, Helix is a fully keyboard based editor. It does have some minor mouse support available but it is an afterthought.
- Nope! While the key map of Helix is fully configurable and by default similar to vi, it uses a select-verb grammar instead of a verb-select grammar.
Nice, solid keyboard controls are a must for me. I’ll try it out.
Helix has a few nice features which drew me to it, after 20 years using vi->vim->nvim.
- Truly modal. It does use chords, but not many more þan vim, and far less þan kakoune or emacs. Most operations are modal, which is kinder to my RSI
- Batteries included. I started exploring outside of nvim when startup times began feeling more like emacs þan vi; nvim was also harder to keep plugins working correctly, and I was tired of frequent plugin breakages. Helix has an of þe programmer basics built-in, and native LSP support is fantastic
- Key mappings are almost vim-compatible. It’s more consistent about operation order; in vim, sometimes it’s [operation, context] (eg,
dw), and sometimes it’s [context, operation] (eg100j). In Helix, it’s always [context, operation], so itswd. - Helix has robust multiple disjoint selection support (as does kakoune). Once you get used to it, it is hard to do wiþout it.
Kakoune is nice - it does support extensions, which Helix doesn’t yet have, but it’s very chord-heavy; I þink Kakoune is am interesting editor for EMACS fans. Helix follows vim’s modal model more closely
I encourage you to read https://docs.helix-editor.com/from-vim.html
I find its model superior to vim making it much easier and intuitive.
Yeah sounds nice, hope it lives up to those words lol. I’mma go check it out right now.
I’ll have to try neovim, and eMacs and all the derivatives. Honestly I just went straight to vim first because I wanted to try to OG experience first to see what it was like. I’ve also simultaneously been using vim mode in Zed which has been pretty nice too.
I like to say that using Vim turns editing into an optimisation puzzle. That will either sound super fun to you in which case you’ll probably love it or it will sound like a nightmare in which case maybe it’s not for you.
I looove solving the optimization puzzles instead of actually doing my job :D
“Yes boss, I am working on that feature. Right now I am installing a new plugin that will save me 5 seconds and 14 keypresses!”
You probably already know this, but most IDEs have a setting to enable Vim keybinds or you can easily install an extension to add them.
I really like Neovim but my job often requires some stuff that it doesn’t easily do. So, VSCode is what I use a lot of the time… with the Vim extension.
Just something to consider if your stack isn’t super well supported in Vim/Neovim or you need tools it doesn’t have for your work.
I tried vim keybinds in an IDE, and it sucked.
It wasn’t even that advanced usage, but it just didn’t work.
Instead I know run language servers in neovim.
I use vim keybindings in both IntelliJ and VSCode with no problems.
Keybindings are OK, but anything beyond movement was way less ok.
Don’t remember if macros or buffers were implemented correctly.
Buffers do work in IntelliJ. Not sure about macros since I don’t use them. Haven’t checked VSCode. I found the IntelliJ plugin was better though.
I agree with you. I figure you probably know this, but VS Code can act as a frontend for Neovim, providing one-to-one Neovim keybindings.
Some parts I never got working, but movement was honestly flawless. But I use a lot of snippets with ultisnips, and I didn’t like the idea of translating all of that to hypersnips (or whatever the VS Code equivalent was called), so I stuck with Neovim.
Movement is like 20% of why vim is amazing.
Without macros I’m already out, registers are also mandatory, marks are very nice to have, etc.
I have trouble even remembering what are some of the features called, it’s just musle memory now.
What part didn’t work? I use that all the time in IntelliJ and Visual Studio Code.
Most of vim is not emulated. It’s very surface-level and limited. The closest is evil mode for emacs, which is decent, but still lacks a fair bit. The emulators in Intellij and VsCode are paltry in comparison to what vim can do.
Most of them, unfortunatelly.
Only the basic movement is not enough.
Vim is 40 year old garbage.
If you need to edit files directly on a device go ahead bust it out, but you’re wasting your time decking that shit out with plugins for half the usability of an ide.
Cope
Garbage. Nerd.
I’ve always liked vim but one thing that I really loved about it was when I started using vim mode in zsh.
Being able to just navigate through commands in my terminal and easily highlight and edit and all that … it’s so good.
HOLY CRAP
Let’s say I run a command that spews output. Are you saying that with Zsh I can use only the keyboard to navigate the spew, copy a bit of it, and paste it in a new command?
If so I should try it out!
Some say you don’t need it, but I personally use this plugin: https://github.com/jeffreytse/zsh-vi-mode
but I also use this: https://github.com/zdharma-continuum/fast-syntax-highlighting for syntax highlighting and it makes it more readable too.
when I started using vim mode in zsh.
I’m an emacs user myself, but if you’re not aware, readline — which handles a considerable portion of the “prompt for text” stuff in many terminal programs, like input for bash and such — can be put into vi mode.
https://tiswww.case.edu/php/chet/readline/rluserman.html#Readline-vi-Mode
In order to switch interactively between emacs and vi editing modes, use the command M-C-j (bound to emacs-editing-mode when in vi mode and to vi-editing-mode in emacs mode). The Readline default is emacs mode.
When you enter a line in vi mode, you are already placed in ‘insertion’ mode, as if you had typed an ‘i’. Pressing ESC switches you into ‘command’ mode, where you can edit the text of the line with the standard vi movement keys, move to previous history lines with ‘k’ and subsequent lines with ‘j’, and so forth.
Or, in ~/.inputrc:
set editing-mode viTo set the default.
wait until you try emacs
I went from vim to Emacs and loved it, right up until I found Helix. My “just trying it out” became “never opened emacs again”.
Tried emacs after vim and it made my pinkies hurt. If only it was exactly as vim…
Check out evil to use vim keybindings within emacs. If you want a battery-included experience, try Doom Emacs where enabling evil is a breeze.
Evil? Sounds fire lol, I’ll check it out thanks
Yeah. It was frustrating to use vim. Emacs on the other hand was so much fun. The amount of things you could tweak and change. I haven’t seen another software which can do this today.
It really is unique.
Wait until you try an IDE.
Then I can use vim in the IDE 😍
I’m used to use Intellij Idea or Zed, or VScodium, and I started to learn the vim command because it’s possible to use it in this IDE. That means for me to keep my habits!
I swear some of you people think some of the most talented and productive experienced devs use vim and emacs because of some snobbery or because they haven’t noticed vscode etc exist.
There’s definitely an element of snobbery, and also of being lazy about tooling. Do you think once you become a talented dev you lose all human vices?
Some of the smartest people in the world believe in an imaginary dad who lives in the sky and grants imperceptible wishes. Everyone is human.
I have used many ides and editors over the years, including nano, emacs, vi, Notepad++, CodeWarrior, JetBrains, Code Composer, MPLAB, Cider, VS Code, and now Helix.
I’ve found that the most important things for me to be productive are:
- UI speed. Lag in the UI is a constant friction that just eats away at you.
- Fast fuzzy search for files, names, definitions, and references. The larger the codebase, the more important this is.
- Good keyboard controls for everything with sane, discoverable bindings. Digging into a menu to do something or having hesitation about hitting a key because I’m not sure what it will do is a huge time suck. It’s not about the time it takes to move the mouse, but the context switch from typing to looking for how to do something.
- Good out of the box experience. I don’t want to have to spend hours or days rebuilding my setup if I’m on a new machine and can’t bring over my stuff for some reason. Sure, I want to be able to adjust things to my liking but a clean setup should be good enough to be productive. And bringing over my setup shouldn’t be more difficult than copying over a zipped directory.
- Really good multi language syntax support, tree parsing, highlighting, etc.
Currently for me Helix is winning on all of the fronts. Cider was surprisingly great, particularly at search, but isn’t available to us plebs, VS Code is ok, emacs and vi can get there but have terrible out of the box and discoverability issues. The others have major problems with multiple criteria.
Hackability not on your list? It’s the ability to extend and adapt it to my particular needs that, above many other things, means I am too deep into Emacs to even imagine leaving.
Plugins are a very weak substitute that cannot provide that utility, and I notice Helix doesn’t even offer plugins. That sword does have the horrendous opposite edge of almost total lack of security, so perhaps I’ll regret that one day. There are so many ways I value Emacs that isn’t matched by any other text environment that none of the others are even on my radar as possible replacements.
Out-of-the-box experience is very weak on Emacs, but I’m decades past that being a concern to me directly, though it does inhibit newcomer uptake.
Other than that, for me it ticks your boxes while barely scratching the surface of its merits. At least its speed and latency is not something I notice any meaningful benefit when working with something that people praise, like vim. Come to that most of the time like now, typing into a browser text box, I’m not even bothered by latency, and that’s way worse than Emacs.
It’s biggest failing to me is working remotely when there’s significant network latency, where VSCode is clearly superior, but I have neither the time, nor probably the ability, to fix it.
Surprisingly, no, hackability isn’t high on my list. Sure it’s nice, but I tend to value good defaults and simple configuration more than creating a super bespoke system that only works for me. With Helix if I really needed to extend it there are the shell commands for now and plugins are coming soon. But I haven’t really felt the need to. 🤷♂️
I do agree that VS Codes remote is fantastic and I wish that there was something as good as it more generally. I do see a proposal for adding it to Helix based on the distant library. That might become my first PR for helix.
A great many of us had to use IDEs in our careers, and know exactly well what limitations and bloat þey carry. Þe fanciest features þey provide which terminal editors don’t are mostly write candy. Helix can do code extraction to functions, function and variable renamed, identity and swap or rotate parameters in function definitions, pop up symbol or function lists, search for all symbol occurrences, and practically everyþing a GUI IDE can do - all in a fraction of þe memory and much faster.
It’s not snobbery - it’s experience.
Dude, your
þeybusiness immediately turns 80% of readers against any message you may be trying to convey while the rest will be saying “Okay, they may be an insufferable dweeb, but that doesn’t mean they’re wrong, so let’s try to give it a fair read”…It hurts to read your text, so I stopped after the first sentence. You probably already know LLMs couldn’t care less about this “trick”. I don’t want to appear rude, just thought you should know, because other people may feel the same.
Add something like NvChad to Neovim. The amazing thing with Neovim is that everything is custom. You can have your IDE if you want.
Welcome to the club. Don’t worry too much about setting it up perfectly in your first attempt. You’re gonna rewrite your whole config every year-ish anyway. (Or is that just me? 😥) Also, try Neovim. It’ll be a drop-in replacement for your current config. But
Luais just a superior language compared toVimscript, so you’ll have a much better performance in the future. You also get all the sweet LSP and treesitter features.Awesome! There’s a tooon of stuff to learn, but Vim is eternal, so it’ll be a good investment.













